我注意到构造函数中有些奇怪的行为。这段代码无限循环,我不知道为什么。
function thing(){
this.start=function (){console.log(this.msg)};
this.msg="Starting...";
setInterval(() => {this.start()},1000)
}
<button onclick="new thing()">Create a new thing!</button>
我已经搜索过此内容,但没有发现任何能解释这一点的内容。请有人帮助我并回答为什么会这样。
谢谢。
最佳答案
您确定要使用setInterval
而不是setTimeout
吗?前者将每1秒调用一次this.start
,而后者将在1秒后调用一次,
请查看以下说明这两个功能的链接:setInterval
https://developer.mozilla.org/pl/docs/Web/API/Window/setIntervalsetTimeout
https://developer.mozilla.org/pl/docs/Web/API/Window/setTimeout
正确的代码段应为:
function thing(){
this.start=function (){console.log(this.msg)};
this.msg="Starting...";
setTimeout(this.start(), 1000)
}
<button onclick="new thing()">Create a new thing!</button>
关于javascript - 构造函数在JS中“创建”无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49650481/