gpt4 book ai didi

javascript - 如何从对象中调用方法中的变量?

转载 作者:行者123 更新时间:2023-11-30 08:07:00 25 4
gpt4 key购买 nike

我正在尝试学习 javascript 中的 OOP。

我编写了以下代码来返回在某个邮件线程中花费的时间:

function mailThread(url) {
this.timerIsOn = true;
this.c = 0;
this.url = url;
this.timerCounter = function () {
if(this.timerIsOn) { //doesnt get called??
console.log('timerison');
this.c = this.c + 1;
console.log(this.c);
} else {
this.windowTimeOpen = this.c
}
}
this.timerInterval = setInterval(this.timerCounter, 1000);
}

mailThread1 = new mailThread('test');

但是 this.timerIsOn 似乎返回 undefined 从而阻止计时器运行。我在这里做错了什么?

我还在以下 Fiddle 中对此进行了测试:http://jsfiddle.net/B5vt5/

最佳答案

问题在于,在名为timerCounter 的函数范围内,“this”指的是函数本身。这样做:

function mailThread(url) {
var self = this;
self.timerIsOn = true;
self.c = 0;
self.url = url;
self.timerCounter = function () {
if (self.timerIsOn) { //Using self instead of this
console.log('timerison');
self.c=this.c+1;
console.log(self.c);
} else {
self.windowTimeOpen = self.c
}
}
self.timerInterval = setInterval(self.timerCounter,1000);
}

mailThread1 = new mailThread('test');

我推荐你看看MDN introduction to OOP

关于javascript - 如何从对象中调用方法中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16673028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com