我试图写一些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,我在窗口上下文中。有没有办法解决这个问题,还是模式设计问题?
谢谢;)
答案 0 :(得分:1)
我不认为打电话"绑定"原型上的一个功能是一个好主意。但是,传递
this.start.bind(this)
to setTimeout可以解决这个问题。