原型[名称]和 prototype.name 有什么区别?



我正在读Javascript这本书的好部分,这里有一个示例

Function.prototype.method = function(name, func){
    this.prototype[name] = func;
    // this.prototype.name = func;
    return this;
};
Number.method("integer", function(){
    return Math[this<0 ? "ceiling" : "floor"](this);
});
document.writeln((10/3).integer());

我想是这样的。prototype[name]=func;并且this.prototype.name=func;是一样的东西,但似乎不是。

当我在Chrome中运行注释输出语句时,它显示了一个错误

"未捕获类型错误:未定义不是函数">

那么,这份声明有什么错呢?它不是把func赋值给name吗?

感谢

表达式

this.prototype.name = func;

为原型对象的"name"属性指定一个值。相比之下,这个

this.prototype[name] = func;

为一个属性赋值,该属性的名称由变量"name"的字符串值决定。不同之处在于,对于简单的.引用,标识符本身被用作属性名称。对于[],将计算方括号内的表达式,并将作为属性名称。

请注意,您的"integer"方法在几行之后就明确地利用了这种行为!

最新更新