Javascript JS:好的部分:superior功能
我试图理解Douglas Crockford的“Javascript:好的部分”,第1章“好的部分”,关于继承的一个例子。特别是Javascript JS:好的部分:superior功能,javascript,javascript-objects,Javascript,Javascript Objects,我试图理解Douglas Crockford的“Javascript:好的部分”,第1章“好的部分”,关于继承的一个例子。特别是superior功能。书中内容如下: Object.method('superior', function(name) { var that = this, method = that[name]; return function() { // Why can’t this just be `return method`? return met
superior
功能。书中内容如下:
Object.method('superior', function(name) {
var that = this, method = that[name];
return function() {
// Why can’t this just be `return method`?
return method.apply(that, arguments);
};
});
正如上面的代码注释中所提到的,我不明白为什么我们需要使用apply
,因为在我的实验中,简单地返回函数本身似乎是可行的
补充资料
上面使用的方法
函数定义为
Function.prototype.method = function(name, func) {
this.prototype[name] = func;
return this;
};
这确实是一种令人费解的做事方式。一个可能的优点是,生成的函数将自动绑定到初始
此
上下文(即,您随后可以调用它,而无需引用实例)
我想以下实施将更清楚地揭示其意图:
Object.method(“上级”),函数(名称){
var-that=this,method=that[name];
返回方法.bind(that);
});
(由于
get\u name
方法没有使用This
上下文,因此下一页的coolcat
示例中没有直接显示出这种可能的优势。)这是一些非常复杂的代码。还要注意的是,改变内置对象是一种非常糟糕的做法……我意识到这本书很旧,但我觉得其中描述的一些东西仍然有价值。不管怎么说,只是试着在上下文中理解这个例子。