【发布时间】:2011-06-25 10:58:14
【问题描述】:
我实际上正在研究 Crockford 的 Javascript:好的部分。我是 JavaScript 新手,所以很难理解这段代码的工作原理:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
这是我的想法:
作为一个方法(对象内部的函数),this 指向Function 对象,但是为什么需要返回该对象,因为我可以从方法内部访问它?如果我是对的,this 是参考,而不是本地副本,所以:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
};
应该也可以。
另一方面,在 JavaScript 中,没有 return 语句的函数返回 undefined 并将其分配给 Function.prototype.method。
问题
返回this有什么意义?
工作示例 #1
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
var add = function(a, b) {
return a+b;
};
Function.method('add', add);
var f = function() {};
print(f.add(1,2));
Number.method('integer', function () {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
print((-10/3).integer());
输出:
-3 3
工作示例 #2
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
};
var add = function(a, b) {
return a+b;
};
Function.method('add', add);
var f = function() {};
print(f.add(1,2));
Number.method('integer', function () {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
print((-10/3).integer());
输出:
-3 3
【问题讨论】:
标签: javascript extension-methods prototypal-inheritance function-prototypes