我正在阅读'javascript:The Good Parts'这些天,我得到一些代码让我困惑:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
console.log(Function.method)
//It returns `function(name, func) {this.prototype[name] = func;return this;}` which defined above.
在我看来,当使用'Function.prototype.method'时,method
方法将被所有Function对象使用,为什么它可以被Function本身使用?
当我将上面的两个Function
字词更改为Array
时,它会返回undefined
。
Array.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
} ;
console.log(Array.method) //It returns `undefined`
答案 0 :(得分:1)
在我看来,当使用'Function.prototype.method'时,方法
method
将被所有Function对象使用
正确。 (它将由所有函数对象继承,不一定是使用。)
为什么函数本身可以使用它?
因为Function
是一个函数对象,所以它与Function.prototype
继承的所有函数一样。
当我将上面的两个Function字改为Array时,它返回undefined。
因为您已将方法添加到数组(继承自Array.prototype
),而不是函数,但Array
是函数,而不是数组。