我正在编写javascript单例类,并希望使用单例模式,如下所示:
function TestClass() {
var self = TestClass.prototype;
if (self.instance) return self.instance;
self.instance = this;
//methods and props declarations
}
var x = new TestClass;
var y = new TestClass;
console.log(x === y); // true
它似乎按我的预期工作,但我担心内存泄漏。所以我决定问专家,这是否是正确的解决方案
最佳答案
不完全是。当我需要单身人士时,我通常会执行以下操作:
function TestClass() {
if (TestClass.__singleton) {
return TestClass.__singleton;
}
// begin construction ...
this.a = function() { };
this.b = 1;
// ... end construction
TestClass.__singleton = this;
} // TestClass
var x = new TestClass(); // creates a new TestClass and stores it
var y = new TestClass(); // finds the existing TestClass
console.log(x === y); // true
y.b = 2;
x.c = 3;
console.log(x.b === y.b && x.c === y.c); // true
如果我的理解是正确的,那么在这种情况下,后续的
TestClass
实例化将创建一个小的,部分定义的TestClass
对象,但是当返回TestClass.__singleton
时将立即将其标记为垃圾回收。关于javascript - javascript单例-这是正确的吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20102970/