<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 = {};
这个是表示一个数组的意思吗?

解决方案 »

  1.   


    if(!this.prototype[name])
    {
        this.prototype[name]=func;
        return this;
    }prototype是原型的意思
    说白了就是当你实例化一个类的时候,实例化出来的对象的属性与方法的集合这里因为name是变量,并不能确定其具体的值,所以用this.prototype[name]来表示假如name的值等于"show",那这里也可以写成this.prototype.show上面的代码就是判断每个function是否有名为你传进去的参数的属性或者方法,没有的话就给他加上这个属性或者方法(你可以传任意的字符串进去)var o = {};不是数组,可以说他是一个命名空间,也可以说他是一个对象字面量,也可以说这货是一个空对象
      

  2.   

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