查看文章 |
奇妙的对象 先来说说函数的对象化能力。 任何一个函数都可以为其动态地添加或去除属性,这些属性可以是简单类型,可以是对象,也可以是其他函数。也就是说,函数具有对象的全部特征,你完全可以把函数当对象来用。其实,函数就是对象,只不过比一般的对象多了一个括号“()”操作符,这个操作符用来执行函数的逻辑。即,函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同。请看下面的代码: function Sing()
{ with(arguments.callee) alert(author + ":" + poem); }; Sing.author = "李白"; Sing.poem = "汉家秦地月,流影照明妃。一上玉关道,天涯去不归 ";Sing(); Sing.author = "李战"; Sing.poem = "日出汉家天,月落阴山前。女儿琵琶怨,已唱三千年 ";Sing();
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]));
var aFunction = function() {}; //一个函数
aFunction.aProperty = "Property of function"; //函数的一个属性 aFunction.aMethod = function(){alert("Method of function")}; //函数的一个方法 //主要看下面: alert(aFunction["aProperty"]); //可以将函数当数组以属性名作为下标来访问属性 aFunction["aMethod"](); //可以将函数当数组以方法名作为下标来调用方法 for( var s in aFunction) //遍历函数的所有属性和方法进行迭代化处理 alert(s + " is a " + typeof(aFunction[s]));
|
