Как я могу добраться до родительской области моей встроенной функции обратного вызова javascript? - PullRequest
1 голос
/ 11 июня 2011

У меня есть что-то похожее на это

function testfunction(runthis)
{
    runthis();
}

function main()
{
     var z = 15;
     testfunction(function(){ alert(z); });
}

Однако он не думает, что z находится в той же области действия, что и моя встроенная функция.Без добавления дополнительных параметров в testfunction или мою встроенную функцию, есть ли способ, чтобы моя встроенная функция принадлежала той же области видимости, что и main?Я пытаюсь заставить работать функции обратного вызова.

Редактировать: Приведенное выше, я думаю, является дерьмовым примером, потому что кажется, что он работает.Однако экземпляр здесь http://pastebin.com/A1pq8dJR не будет работать, пока я не добавлю .call (это параметры) и не вручную задаю область действия (хотя я не совсем уверен, что это делает).Я бы подумал, что это используется там будет относиться к области видимости imageLoaded, но это относится к области видимости imageBoxCreate?Может кто-нибудь объяснить, почему это не будет работать без этого и почему это исправило это?

1 Ответ

3 голосов
/ 11 июня 2011

Если вы просто вызываете глобальную функцию в javascript, объект this будет глобальным объектом верхнего уровня window.Если вы вызываете функцию, используя оператор точки на объекте, тогда this будет этим объектом при запуске функции.Когда вы используете function.call, вы явно указываете, какой объект должен быть this.Я думаю, что вы, вероятно, просто делаете некоторые ошибки при использовании this и var, но ваш код достаточно длинный и достаточно сложный, поэтому я не собираюсь тратить время на его отладку.Если вы можете изолировать вашу проблему с помощью меньшего примера кода, люди смогут помочь вам легче.

...