《悟透javascript》学习笔记:五、奇妙的对象
引言
任何一个函数都可以为其动态地添加或去除属性,这些属性可以是简单类型,可以是对象,也可以是其他函数。也就是说,函数具有对象的全部特征,你完全可以把函数当对象来用。其实,函数就是对象,只不过比一般的对象多了一个括号“()”操作符,这个操作符用来执行函数的逻辑。即,函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同。请看下面的代码:
关于函数,上代码
<script language="javascript">
function Sing()
{
with(arguments.callee)
alert(author + ":" + poem);
};
Sing.author = "李白";
Sing.poem = "汉家秦地月,流影照明妃。一上玉关道,天涯去不归 ";
Sing();
Sing.author = "李战";
Sing.poem = "日出汉家天,月落阴山前。女儿琵琶怨,已唱三千年 ";
Sing();
</script>
(说明:
1. with的用途是为其范围内的属性省略前缀,如arguments.callee.author和arguments.callee.poem就可以直接写成author和poem;
2. arguments.callee:表示当前被调用的函数对象,也就是Sing,所以arguments.callee.author==Sing.author
)
从上面的代码看来,我们可以说,函数是可以被直接执行的特殊对象,它仅比对象多了对括号,而其它的都一样。(???不知这样说是不是完全正确)
好了,以上的讲述,我们应该算理解了 function 类型的东西都是和 object 类型一样的东西,这种东西被我们称为“对象”。
关于对象,上代码
<script language="javascript">
var anObject = {}; //一个对象
anObject.aProperty = "Property of object"; //对象的一个属性
anObject.aMethod = function(){alert("Method of object")}; //对象的一个方法
//主要看下面:
alert(anObject["aProperty"]); //可以将对象当数组以属性名作为下标来访问属性
anObject["aMethod"](); //可以将对象当数组以方法名作为下标来调用方法
for( var s in anObject) //遍历对象的所有属性和方法进行迭代化处理
alert(s + " i
相关文档:
深入理解JavaScript的变量作用域
http://www.cnblogs.com/rainman/archive/2009/04/28/1445687.html
在学习JavaScript的变量作用域之前,我们应当明确几点:
a、JavaScript的变量作用域是基于其特有的作用域链的。
b、JavaScript没有块级作用域。
c、函数中声明的变量在整个函数中都有定义。
1、JavaScript的作用域链 ......
在Javascript中没有class类,但是同样也可以进行对象的创建。在面向对象的语言中需要实例化某个具体类的实例,在Javascript中则不用。
在Javascript里,对像可以创建新的对象,也可以继承自其他对象。这个概念称为原型化继承(prototypal inheritance)。
任何函数在Javascript 中都可以被实例化一个对象。
程序如下:
// ......
response.write "<script language='javascript'>"
response.write "alert('用户名或密码错误!');"
response.write "hist ......
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="serve ......