在Function.prototype上添加方法

时间:2016-08-24 08:08:49

标签: javascript prototype

我正在阅读'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`

1 个答案:

答案 0 :(得分:1)

  

在我看来,当使用'Function.prototype.method'时,方法method将被所有Function对象使用

正确。 (它将由所有函数对象继承,不一定是使用。)

  

为什么函数本身可以使用它?

因为Function是一个函数对象,所以它与Function.prototype继承的所有函数一样。

  

当我将上面的两个Function字改为Array时,它返回undefined。

因为您已将方法添加到数组(继承自Array.prototype),而不是函数,但Array是函数,而不是数组。