Javascript对象关闭上下文

时间:2016-12-08 14:54:34

标签: javascript

我试图写一些JS对象。陷入困境,我不明白上下文是如何运作的。这是一个简单的例子:

var MyApp = function(el) {
    this.el = el;
};

MyApp.prototype.bind = function() {
    window.setTimeout(this.start, 300);
}

MyApp.prototype.test = function(msg) {
    console.log(msg);
}

MyApp.prototype.start = function() {
    console.log(this); // Returns the window context
    this.test('Hello'); // Doesn't work, of course.
}

var myapp = new MyApp(el);
myapp.bind();

问题是当调用start方法时,由于window.setTimeout,我在窗口上下文中。有没有办法解决这个问题,还是模式设计问题?

谢谢;)

1 个答案:

答案 0 :(得分:1)

我不认为打电话"绑定"原型上的一个功能是一个好主意。但是,传递

this.start.bind(this)

to setTimeout可以解决这个问题。