我有一个 javascript 类对象,我想在同一页面上多次使用它,并且它需要一个setTimeout
函数才能工作,因为它在后台一直在滴答作响。但是,正如您在这个小提琴中看到的那样,在超时调用中,它只引用对象的最新实例。有谁知道我该如何排序?最好,我想看看它是如何在 jQuery 中完成的,我想确切地了解它是如何做到的。
问问题
62 次
1 回答
2
当您this.doDelayed
在双重嵌套函数中编写代码时,this
关键字不会引用您的test
对象。相反,它指的是当前正在执行的函数被调用的任何对象,可能是window
.
为了克服这个问题,你必须this
在函数的最开始保存你的test
,这样说:var $this = this;
然后你可以使用$this
.
除此之外,当您简单地编写 时x = something
,符号x
被视为对象上的window
属性(也称为“全局变量”)。因此,您的doDelayed
和construct
函数最终都在window
对象上。因此,当您第二次执行此操作时,它们都会被覆盖。这就是为什么您两次获得相同结果的原因。
相反,您应该写$this.doDelayed = function() ...
(从上面$this
保存的值在哪里this
),并对construct
.
于 2012-10-03T00:12:29.660 回答