У меня есть объект, вложенный в родительский объект. Внутренний объект имеет 2 функции, и нужно вызвать другое. Я предположил, что могу позвонить this.theFunction()
, но это, похоже, не так.Вызов функции внутри вложенного объекта
var views = {
settings: {
init: function() {
this.doSomething(withThing);
},
doSomething: function(with) {
// NEVER GETS CALLED
}
}
};
В этом случае, this
кажется, ссылаться на DOMWindow
вместо views.settings
объекта, как я ожидал. Что мне не хватает?
ОБНОВЛЕНИЕ
views.settings.init()
функция вызывается в качестве обратного вызова. Внешний процесс вызывает template.init(view, views.settings.init);
. Последний аргумент - это обратный вызов. В пределах template.init()
обратный вызов называется просто callback()
. Для ясности (я надеюсь), вот фрагмент того, как мы получаем views.settings.init
:
Что бы вызвать контекст заблудиться и что я могу сделать, чтобы получить его обратно, так что this
ссылается на views.settings
объект?
Безотносительно звонит ваша функция «INIT» делает это таким образом, чтобы потерять контексте ('this' значение). Значение по умолчанию для 'this' является глобальным контекстом (если вы не находитесь в режиме« строгого »). – Pointy
'views.settings.doSomething()'? – BenM
также «с» является зарезервированным ключевым словом, см. Http://stackoverflow.com/questions/61552/are-there-legitimate-uses-for-javascripts-with-statement – Biketire