我有以下代码:
/* 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
有人可以告诉我为什么显示此错误?
答案 0 :(得分:0)
将您的时间间隔代码更改为以下内容:
var idInterval = setInterval(() => {
var time = this.convertToTime( new Date().getTime() - this.getKey('startDate') );
console.log(time);
}, 1000);
在这种情况下,应使用箭头功能以不松开上下文(“ this”指针)。
使用常规函数(匿名函数)时,它们会在自己内部创建一个新的“ this”。