日期:2014-05-16  浏览次数:20355 次

求教如何理解这些代码

<script language="javascript">
Function.prototype.method = function (name, func)
{
if(!this.prototype[name])
{
this.prototype[name]=func;
return this;
}
};
Number.method('ins', function(){return 2;});
document.write((3).ins());
</script>

这里的以下这些代码怎么理解
	if(!this.prototype[name])
{
this.prototype[name]=func;
return this;
}

prototype[name]什么意思

还有再问一下
var o = {};

这个是表示一个数组的意思吗?

------解决方案--------------------

if(!this.prototype[name])
{
    this.prototype[name]=func;
    return this;
}

prototype是原型的意思
说白了就是当你实例化一个类的时候,实例化出来的对象的属性与方法的集合

这里因为name是变量,并不能确定其具体的值,所以用this.prototype[name]来表示

假如name的值等于"show",那这里也可以写成this.prototype.show

上面的代码就是判断每个function是否有名为你传进去的参数的属性或者方法,没有的话就给他加上这个属性或者方法(你可以传任意的字符串进去)

var o = {};

不是数组,可以说他是一个命名空间,也可以说他是一个对象字面量,也可以说这货是一个空对象


------解决方案--------------------
prototype是原型,放的一般是可以共享的方法,省点内存。当然围绕prototype有太多可以做的文章了,直接可以写本书。
xxx[name] 这种方式可以看作是javascript特有的反射,有以下几种常见的操作
xxx[name] =
=xxx[name]
for(var key in xxx){
   alert(xxx[key]);
}

if(key in xxx)