我有一个嵌套在父对象中的对象。内部对象有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
的片段:
template.init(view, views.settings.init);
var template: {
init: function() {
callback();
}
}
什么会导致上下文丢失,我该怎么做才能让它回来,以便this
引用views.settings
对象?
答案 0 :(得分:1)
尝试这样做:
var views = {
settings: {
init: function() {
var withThing = 'withThing';
this.doSomething(withThing);
},
doSomething: function(withThing) {
// NEVER GETS CALLED
alert(withThing)
}
}
};
views.settings.init();
这是jsfiddle