可能的复制品:
在 JavaScript 中实现单例的最简单/最干净的方法
我对单例使用这种模式,在这个例子中,单例是 PlanetEarth:
var NAMESPACE = function () {
var privateFunction1 = function () {
privateFunction2();
};
var privateFunction2 = function () {
alert('I\'m private!');
};
var Constructors = {};
Constructors.PlanetEarth = function () {
privateFunction1();
privateFunction2();
};
Constructors.PlanetEarth.prototype = {
someMethod: function () {
if (console && console.log) {
console.log('some method');
}
}
};
Constructors.Person = function (name, address) {
this.name = name;
this.address = address;
};
Constructors.Person.prototype = {
walk: function () {
alert('STOMP!');
}
};
return {
Person: Constructors.Person, // there can be many
PlanetEarth: new Constructors.PlanetEarth() // there can only be one!
};
}();
因为 地球的构造函数仍然是私有的,所以只能有一个。
直觉告诉我,这种自我烹饪的方法并不是最好的,主要是因为我没有受过学术教育,而且我倾向于用愚蠢的方法解决问题。如果 好多了被定义为 在风格上更好和/或更有力,你会提出什么样的 好多了替代方法?