一个类的实例可以在JavaScript中替换自己吗?

前端之家收集整理的这篇文章主要介绍了一个类的实例可以在JavaScript中替换自己吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在全局范围内有一个变量,它被分配了一个类的实例,如下所示:
window.someInstance = new MyClass();

稍后,我需要用新实例替换该变量,但是在类本身的方法中这样做是否可行/可接受?例如:

function MyClass () {

    this.myClassMethod = function () {
        window.someInstance = new MyClass();
    };

}

window.someInstance = new MyClass();
window.someInstance.myClassMethod.call();

我知道一个奇怪的场景,但它干净利落,我只是不确定这是否会产生任何内存或引用问题?

谢谢

解决方法

只有当每个人总是通过window.somereference间接访问实例时.一旦有人做了var x = window.someinstance,那么你就会失去间接,你的技巧就会停止工作.

您可以通过将间接放置在实例本身的变量而不是全局变量中来实现更强大的实现

function Instance(){
   this.impl = ...;
}
Instance.prototype = {
    changeImpl: function(){ this.impl = new Impl(); },//delegate all other methods
    f1: function(){ return this.impl.f1(); }
}

猜你在找的JavaScript相关文章