使用setTimeout回调时如何维护对实例的引用?

时间:2013-07-22 07:18:12

标签: javascript knockout.js

如何在使用setTimeout回调时维护对实例的引用? E.G:

在我的ViewModel中(使用Knockout)

var MyVM = function () {
  this.myFunc = function () {
    setTimeout("this.myCallback()", 2000);
  };
  this.myCallback = function() { this.myObservable(true); }
}

这失败了。

1 个答案:

答案 0 :(得分:3)

您可以添加私人字段:

var MyVM = function () {
    var self = this;
    this.myFunc = function () {
        setTimeout(self.myCallback, 2000);
    };
    this.myCallback = function() { self.myObservable(true); }
}
var vm = new MyVM();

看看RP Niemeyer的answer

我希望它有所帮助。