function.prototype.method

时间:2012-12-24 03:38:23

标签: javascript

我想问下面的代码

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

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

使其更清晰

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

现在可以在函数或任何其他函数上调用方法吗?

2 个答案:

答案 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()