一个类的实例可以在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(); }
}
链接地址: http://www.djcxy.com/p/10261.html

上一篇: Can an instance of a class replace itself in JavaScript?

下一篇: How does it work?