《悟透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.authorarguments.callee.poem就可以直接写成authorpoem

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 + " is a " + typeof(anObject[s]));

</script>

 

对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理。那么,它到底应该算是数组呢,还是算对象?

 

其实, object function的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。 正如量子力学在一些地方用粒子来解释和处理问题,而在另一些地方却用波来解释和处理问题。你也可以在需要的时候,自由选择用对象还是数组来解释和处理问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值