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