gpt4 book ai didi

Javascript "this"变量从特定对象切换到 DOMWindow

转载 作者:行者123 更新时间:2023-11-30 10:48:20 26 4
gpt4 key购买 nike

我在 Javascript 强制 [object DOMWindow] 进入对象原型(prototype)中的函数时遇到问题。我得到的完整错误如下:

未捕获的类型错误:对象 [object DOMWindow] 没有方法“positionconvert”

基本上我所做的是在特定条件下在对象原型(prototype)内部创建一个 var interval,它用 window.setInterval() 计数:

var interval = window.setInterval(this.alertanimate, 500);

alertanimate 函数在同一个原型(prototype)中,并在此行中使用 this 变量:

this.positionconvert(this.alerticon, -69, 55);

(positionconvert 是另一个函数,alerticon 是一个对象)。问题是当我得到 window.setInterval 涉及的 js 开始假设 this 是 DOM 而不是对象原型(prototype)时,就像我预期的那样,出现上述错误。当我将它硬编码为与特定对象一起工作时,它可以工作,但是在这个变量中的某个地方 - 传递 this 变量失去了与对象的连接。我希望这一切都有意义吗?我做错了什么?

最佳答案

this.alertanimate 传递给 setIntervall 会失去与主对象的连接。 this 在函数中指代的内容完全由调用函数的方式 定义。如果将函数传递给 setTimeout,则 this 将引用 window

你可以这样做:

var self = this;

window.setInterval(function() {
self.alertanimate();
}, 500);

在较新的浏览器中,您还可以使用 .bind() [MDN] (请参阅文档了解替代实现):

window.setInterval(this.alertanimate.bind(this), 500);

关于Javascript "this"变量从特定对象切换到 DOMWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007494/

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