我在全局范围内有一个变量,它被分配了一个类的实例,如下所示:
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(); } }