Javascript - сохранение переменной в области видимости после объявления функции

У меня есть некоторый код 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 всегда пусто, потому что функция вышла из области видимости.

Что я должен делать внутри этой функции, чтобы я мог использовать context?

1 ответ

Решение

context не вышел за рамки - это, вероятно, просто null для начала (и даже если бы не было, скорее всего, не было бы call метод).

Вместо этого вы, вероятно, хотели использовать functor.call(context, e),

Функции имеют call метод, который принимает this/ контекстный аргумент и переменная длина следующих аргументов. Объекты в JavaScript обычно не имеют call метод, который принимает функцию и переменную длины после аргументов (если вы не добавили такой метод и ожидаете context иметь его).

Другие вопросы по тегам