0

这是我第一次在 JavaScript 中使用对象,我使用了本教程中的方法 1.1 ,我有以下代码:

function MyClass() {
    this.currentTime = 0;

    this.start = function() {
        this.currentTime = new Date().getTime();
        console.log(this.currentTime); //this line prints the time i just set
        this.intervalID = setInterval(this.step, 25);
    };
    this.step = function() {
        var d = new Date().getTime();
        console.log(this.currentTime); //always prints "undefined" to the console
    };

    this.stop = function() {
        clearInterval(this.intervalID);
    };
}    

问题是在step()函数中,console.log(this.currentTime)总是打印“未定义”,而this.currentTimestart()函数中设置。

为什么?我错过了什么?

4

1 回答 1

2

在每种情况下,您都在使用函数的范围this.fn,这就是为什么您不将其添加到MyClass的范围。您必须存储this对象并使用它来添加属性。

function MyClass() {
    this.currentTime = 0;
    var self = this;
    this.start = function() {
        self.currentTime = new Date().getTime();
        console.log(self.currentTime); //this line prints the time i just set
        self.intervalID = setInterval(self.step, 25);
    };
    this.step = function() {
        var d = new Date().getTime();
        console.log(self.currentTime); //always prints "undefined" to the console
    };

    this.stop = function() {
        clearInterval(self.intervalID);
    };
}
于 2013-06-15T10:35:51.853 回答