ES6设计模式之单例模式

先上代码

class Singleton {
    constructor(data) {
        if (Singleton.prototype.Instance === undefined) {
            this.data = data;
            Singleton.prototype.Instance = this;
        }
        return Singleton.prototype.Instance;
    }
}

let ob1 = new Singleton("one");
let ob2 = new Singleton("two");
let ob3 = new Singleton("Three");
ob2.init = 'Object flg';

console.log(ob1 === ob2);  // => true
console.log(ob1 === ob3);  // => true

console.log(ob1);
/* => 
{
  data:"one",
  init:"Object flg",
  __proto__:Object
}
*/
console.log(ob2);
/* => 
{
  data:"one",
  init:"Object flg",
  __proto__:Object
}
*/
console.log(ob3);
/* => 
{
  data:"one",
  init:"Object flg",
  __proto__:Object
}
*/

代码解释:

  1. prototype__proto__的关系
    对象的__proto__就是构造函数的protoype
    此两者都是一个对象。
  2. 什么是单例模式
    保证一个类仅有一个实例。
    修改该实例,自然会影响到其它的实例引用。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容