1

我想问一下下面的代码

Function.prototype.method = function (name, func) {
   this.prototype[name] = func;
   return this;
};

这是否意味着“函数”和任何新函数都将继承方法创建的函数?

为了更清楚

Function.method('test', function () {return 1;});

test 现在是否可以作为 Function 或任何其他函数的方法调用?

4

2 回答 2

2

不,this函数内部是指调用它的对象。在这种情况下,它应该是一个函数,更具体地说,是一个构造函数。它应该像这样使用:

function SomeObject() {}

SomeObject.method('doSomething', function() {
    alert('Something!');
});

new SomeObject().doSomething(); // Something!
于 2012-12-24T03:41:28.473 回答
0

JavaScript 是一种典型语言。当在对象上调用函数但未找到时,开始搜索原型链。它将搜索原型链中的所有对象,直到原型链结束于Object所有对象的父级。

所有函数都直接或间接继承Function,这意味着所有函数都将具有您指定的“方法”,即使是已经创建的函数。


Function.prototype.printSup = function () { console.log('sup'); }
Math.max.printSup();
String.pringSup();
'asdf'.substr.printSup()
于 2012-12-24T03:40:35.640 回答