在javascript类中的另一个函数内调用一个函数

时间:2018-09-17 20:41:43

标签: javascript

我有以下代码:

/* MY CLASS */
class Cronometer{
    constructor(){
    }

    getKey(key){
        return JSON.parse(localStorage.getItem('taskRunning'))[key];
    }

    initCronometer(currentTask){
        var startDate = new Date().getTime();

        var config = {
            "startDate": startDate,
            "currentTask": currentTask
        };

        localStorage.setItem('taskRunning', JSON.stringify(config));
       

        var idInterval = setInterval(function(){
            var time = this.convertToTime( new Date().getTime() - this.getKey('startDate') );
            console.log(time);
        }, 1000);

        return idInterval;
    }

}

/* RUN */
var c = new Cronometer();
c.initCronometer(5555);

当我运行 c.initCronometer(5555)时,会收到以下消息:

Uncaught TypeError: this.getKey is not a function

有人可以告诉我为什么显示此错误?

1 个答案:

答案 0 :(得分:0)

将您的时间间隔代码更改为以下内容:

 var idInterval = setInterval(() => {
        var time = this.convertToTime( new Date().getTime() - this.getKey('startDate') );
        console.log(time);
    }, 1000);

在这种情况下,应使用箭头功能以不松开上下文(“ this”指针)。

使用常规函数(匿名函数)时,它们会在自己内部创建一个新的“ this”。