在嵌套对象中调用函数

时间:2014-01-29 14:57:52

标签: javascript tidesdk

我有一个嵌套在父对象中的对象。内部对象有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对象?

1 个答案:

答案 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