我有一部分使用私有变量并公开公共方法的插件:

JSBIN 1

function  myWorld()
    {
      var myPrivate=1;
      this.do1=function (){alert(myPrivate);} ;
    }

var a=new  myWorld();

a.do1() //1
alert(a.myPrivate); //undefined (as it should be)


但我想防止再次这样做:new myWorld();

我知道的唯一选择是使用对象常量:

JSBIN 2

var myWorld=
    {
      myPrivate:1,
      do1:function (){alert(this.myPrivate);}
    }


alert(myWorld.myPrivate); //1 ( ouch....)
myWorld.do1() //1




如何封装私有字段并仍然防止myWorld的使用被实例化>1 times

最佳答案

闭包是定义范围的好工具:

  var myWorld= (function(){
    var myPrivate = 1;
    return {
      do1:function (){alert(myPrivate);}
    }
  }());


   myWorld.do1();


您可能想看看免费的Learning JavaScript Design Patterns

关于javascript - 仅创建一个构造函数实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15274927/

10-11 08:10