Javascript - 在声明函数后保持变量的范围

时间:2014-07-01 17:00:46

标签: javascript variables scope closures

我有一些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

1 个答案:

答案 0 :(得分:3)

context没有超出范围 - 它可能只是null开始(即使它不是,它可能没有call方法)

相反,您可能打算使用functor.call(context, e)

函数有一个call方法,它接受this / context参数和可变长度的后续参数。 JavaScript中的对象通常有一个call方法接受一个函数和可变长度的跟随参数(除非你添加了这样一个方法并期望context它)。