如何使用构造函数制作JavaScript单例而不使用return?

Tow*_*wer 6 javascript

我目前知道在JavaScript中构建单例的两种方法.第一:

var singleton = {
 publicVariable: "I'm public",
 publicMethod: function() {}
};
Run Code Online (Sandbox Code Playgroud)

它是完美的,除了它没有我可以运行初始化代码的构造函数.

第二:

(function() {

var privateVariable = "I'm private";
var privateFunction = function() {}

return {
 publicVariable: "I'm public",
 publicMethod: function () {}
}

})();
Run Code Online (Sandbox Code Playgroud)

第一个版本没有私有属性,也没有构造函数,但它更快更简单.第二个版本更复杂,更丑,但有一个构造函数和私有属性.

我不需要私有属性,我只想拥有一个构造函数.有没有我缺少的东西,或者是我唯一拥有的两种方法?

gbl*_*zex 7

function Singleton() {
  if ( Singleton.instance )
    return Singleton.instance;
  Singleton.instance = this;
  this.prop1 = 5;
  this.method = function() {};
}?
Run Code Online (Sandbox Code Playgroud)