prototype [name]和prototype.name有什么区别?

use*_*955 -1 javascript

我正在阅读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());
Run Code Online (Sandbox Code Playgroud)

我以为this.prototype [name] = func; 和this.prototype.name = func; 是相同的,但似乎他们不是.

当我在Chrome中运行注释掉的语句时,显示错误

"未捕获的TypeError:undefined不是函数"

那声明怎么了?是不是将func分配给了名字?

谢谢

Poi*_*nty 5

表达方式

this.prototype.name = func;
Run Code Online (Sandbox Code Playgroud)

为原型对象的"name"属性赋值.相比之下,这

this.prototype[name] = func;
Run Code Online (Sandbox Code Playgroud)

为属性赋值,该属性的名称由变量"name"的字符串值确定.不同之处在于,通过简单的.引用,标识符本身被视为属性名称.使用时[],括号内的表达式将被计算,并将视为属性名称.

请注意,您的"整数"方法明确地利用了这种行为只需几行!