Javascript 在嵌套对象中调用函数
我有一个对象,嵌套在父对象中。内部对象有两个函数,一个需要调用另一个。我以为我可以调用Javascript 在嵌套对象中调用函数,javascript,tidesdk,Javascript,Tidesdk,我有一个对象,嵌套在父对象中。内部对象有两个函数,一个需要调用另一个。我以为我可以调用this.theFunction(),但事实似乎并非如此 var views = { settings: { init: function() { this.doSomething(withThing); }, doSomething: function(with) { // NEVER GETS CALLED } } }; 在本例中,this
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();
}
}
什么会导致上下文丢失?我可以做些什么来找回它,以便此
引用视图。设置对象?尝试执行以下操作:
var views = {
settings: {
init: function() {
var withThing = 'withThing';
this.doSomething(withThing);
},
doSomething: function(withThing) {
// NEVER GETS CALLED
alert(withThing)
}
}
};
views.settings.init();
这里有一个调用“init”函数的方法会丢失上下文(这个
值)。此
的默认值是全局上下文(除非您处于“严格”模式)。视图.设置.doSomething()
?另外with
是保留关键字,请参阅更新的问题以尝试提供一些清晰性。实际上,我并没有将与一起用作变量。在我的例子中,这是一个糟糕的选择。:-)