如何在JavaScript中测试类实例的存在

问题描述

我有这个:

class Animal {
    constructor() {
        Animate();

        function Animate() {
            if (true) { // What do change here for the object to self-check if it still exists?
                console.log('1');
                requestAnimationFrame(Animate);
            }
        }
    }
}

var dog = new Animal();

setTimeout(function () {
    dog = undefined;
    // The Animate() should no longer be called at this point.
},3000);

如果类的实例不再“存在”,我该如何修改 Animate()函数以停止再次调用自身??


感谢您的所有回复。就像下面已经说过的那样,似乎我需要实现某种“销毁”方法来处理和管理Animal类的实例的Animate()函数调用。并不是我真正想要的,我希望实例能够自我感知并知道何时不再需要它。

不确定这是否有助于澄清以下一些问题,但我们可以:

var dog1 = new Animal();
var dog2 = new Animal();
var dog3 = new Animal();

每个实例将运行自己的Animate()。如果实例设置为未定义(例如,也可以设置为null),则不应再调用Animate()调用。这里的目标是使对象实例具有自我意识,不再需要它。创建destroy方法将意味着我们在外部进行调用,因此该实例不是自觉的。

如果使用jQuery,则可以在类内添加$(this)(0).length来检测对象是否仍然存在。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)