【发布时间】:2015-12-01 10:51:07
【问题描述】:
我在书中读到了一段代码,
Function.prototype.before = function(beforefn){
var _self = this;
return function(){
beforefn.apply(this,arguments);
return _self.apply(this,arguments);
}
}
执行时
beforefn.apply(this,arguments);andreturn _self.apply(this,arguments);,我认为即使不修复“this”也会得到相同的结果。
function test(){
return function(){
alert(this.foo);
}
}
var o1 = {
foo:"foo",
test:test(),
}
o1.test(); //alert foo
那么作者修复这个问题的目的是什么? P.S 这是第一次在 StackOverflow 上提问,请原谅我的英语不好。谢谢
感谢您注意到我的问题!我会这样重写:
Function.prototype.before = function(beforefn){
var _self = this;
return function(){
beforefn(arguments);
return arguments.callee;
}
}
【问题讨论】:
-
你是什么意思,“没有解决这个问题”?你能说明你将如何重写
before方法吗? -
var foo = "test"在你的test函数中应该做什么?它从未使用过。 -
@Bergi 是的,没用,我删了
-
@Bergi 感谢提醒,我已经重写了我的问题中的鳕鱼。
-
嗯,
return arguments.callee(除了被弃用)不再调用原始函数_self了吗?
标签: javascript return closures this