我想问一下下面的代码
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
这是否意味着“函数”和任何新函数都将继承方法创建的函数?
为了更清楚
Function.method('test', function () {return 1;});
test 现在是否可以作为 Function 或任何其他函数的方法调用?
我想问一下下面的代码
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
这是否意味着“函数”和任何新函数都将继承方法创建的函数?
为了更清楚
Function.method('test', function () {return 1;});
test 现在是否可以作为 Function 或任何其他函数的方法调用?
不,this
函数内部是指调用它的对象。在这种情况下,它应该是一个函数,更具体地说,是一个构造函数。它应该像这样使用:
function SomeObject() {}
SomeObject.method('doSomething', function() {
alert('Something!');
});
new SomeObject().doSomething(); // Something!
JavaScript 是一种典型语言。当在对象上调用函数但未找到时,开始搜索原型链。它将搜索原型链中的所有对象,直到原型链结束于Object
所有对象的父级。
所有函数都直接或间接继承Function
,这意味着所有函数都将具有您指定的“方法”,即使是已经创建的函数。
Function.prototype.printSup = function () { console.log('sup'); }
Math.max.printSup();
String.pringSup();
'asdf'.substr.printSup()