gpt4 book ai didi

JavaScript - "this"的所有者

转载 作者:行者123 更新时间:2023-11-28 08:03:15 26 4
gpt4 key购买 nike

我关注了一个 tutorial用于创建 JavaScript 秒表,并试图扩展它以使用多个秒表(一个类的多个实例)。我遇到的问题是,当我试图在时钟滴答作响时显示当前值时,我需要对类实例进行硬编码,因为使用“this”不起作用(在我使用 console.log 的那一行)。我已将代码缩减到最少以尝试理解这方面的内容,并粘贴了下面的内容:

function Timer(){
var time1 = null;
var time2 = null;
var timeLoop = null;

function getTime(){
var day = new Date();
return day.getTime();
}

this.start = function(){
time1 = getTime();

timeLoop = setInterval(function(){
time2 = getTime();
console.log(_Timer.duration());
//console.log(this.duration());
},500);
}

this.duration = function(){
return (time1 - time2) / 1000;
}

}

我认为下面的链接描述了我的问题,但我对它的理解还不够,无法在此处应用。问题是由于所有者是 this.start 而不仅仅是这个吗?我该如何修改代码以使其适用于任何 Timer 实例?

http://www.quirksmode.org/js/this.html

我已经包含了硬编码值行和不起作用的“this”行。

谢谢,

杰兰特

最佳答案

如果你想让 this 属性保持一致,你应该绑定(bind)被调用的函数。

例如,

setInterval(function() {/* 代码在这里 */}.bind(this), 500)

这样,内部函数的 this 将与外部函数的相同。

关于JavaScript - "this"的所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29626108/

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