0

我有一个 javascript 类对象,我想在同一页面上多次使用它,并且它需要一个setTimeout函数才能工作,因为它在后台一直在滴答作响。但是,正如您在这个小提琴中看到的那样,在超时调用中,它只引用对象的最新实例。有谁知道我该如何排序?最好,我想看看它是如何在 jQuery 中完成的,我想确切地了解它是如何做到的。

http://jsfiddle.net/cgoddard/yQDLe/20/

4

1 回答 1

2

当您this.doDelayed在双重嵌套函数中编写代码时,this关键字不会引用您的test对象。相反,它指的是当前正在执行的函数被调用的任何对象,可能是window.

为了克服这个问题,你必须this在函数的最开始保存你的test,这样说:var $this = this;
然后你可以使用$this.

除此之外,当您简单地编写 时x = something,符号x被视为对象上的window属性(也称为“全局变量”)。因此,您的doDelayedconstruct函数最终都在window对象上。因此,当您第二次执行此操作时,它们都会被覆盖。这就是为什么您两次获得相同结果的原因。
相反,您应该写$this.doDelayed = function() ...(从上面$this保存的值在哪里this),并对construct.

于 2012-10-03T00:12:29.660 回答