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
иметь его).