我有一些javascript代码,它接受一个函数并再次调用它:
var obj = {
// returns the function with prevent default prepended.
run: function(functor, context){
return function(e){
e.preventDefault();
context.call(functor, e);
};
}
}
var myContext = this;
var returnedFunction = obj.run(function(e){alert(e.target)}, myContext);
var returnedFunction(...);
问题在于:
在context.call(functor, e);
context
始终为null,因为该函数已超出范围。
我在该功能中需要做些什么才能使用context
?
答案 0 :(得分:3)
context
没有超出范围 - 它可能只是null
开始(即使它不是,它可能没有call
方法)
相反,您可能打算使用functor.call(context, e)
。
函数有一个call
方法,它接受this
/ context参数和可变长度的后续参数。 JavaScript中的对象通常不有一个call
方法接受一个函数和可变长度的跟随参数(除非你添加了这样一个方法并期望context
它)。