Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在嵌套对象中调用函数_Javascript_Tidesdk - Fatal编程技术网

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
是保留关键字,请参阅更新的问题以尝试提供一些清晰性。实际上,我并没有将
一起用作变量。在我的例子中,这是一个糟糕的选择。:-)