保证一个类仅有一个实例,并提供一个访问它的全局访问点。
var SingleTon=(function(){ var instance; var Student=function(){ this.name="yqy"; this.age=23; } return { getInstance:function () { if(!instance){ instance =new Student(); } return instance; } }; })(); var s1=new SingleTon.getInstance(); var s2=new SingleTon.getInstance(); console.log("此时创建的Student是否是同一个Student:"+(s1===s2));
从代码中可以看出,Student是SingleTon私有的,用户无法直接创建这个对象,只能通过SingleTon返回实例,在SingleTon中只new 了一次,返回的会是同一个实例。
ps:===和==的区别
var i=1; var j="1"; var k=1; console.log((i==j)+";"+(i===j));//true;false console.log((i!=j)+";"+(i!==j));//false;true console.log((i==k)+";"+(i===k));//true;true console.log((i!=k)+";"+(i!==k));//false;false
===和==不同在于,===是要比较类型的,然后再比较值,==不同类型的时候会先转换然后再比较值。