兼容ES5的方法【闭包:可以保存局部属性而不被销毁-推荐使用】
/***
* 兼容ES5的方法:闭包【闭包的一个重要的特性就是可以保存局部属性不会被销毁】
* */
// 程序一上来就会执行立即执行函数,返回一个函数赋值给uniqueInstance【内部的instance就永久保存在函数中】
let uniqueInstance = (function f () {
let instance = null;
return function () {
if (!instance) {
instance = new Test();
}
console.log();
return instance;
};
})();
console.log(Object.is(uniqueInstance(), uniqueInstance()));
ES6独有的方法:类变量保存实例【其他很多语言通用方法-推荐使用】
class Test {
// 利用Test类方法的唯一性保存实例【其他很多语言通用方法】
static getUniqueInstance () {
if (!Test.uniqueInstance) {
Test.uniqueInstance = new Test();
}
return Test.uniqueInstance;
}
}
// ES6添加类属性目前唯一的的方法【参考手册:http://es6.ruanyifeng.com/#docs/class】
Test.uniqueInstance = null;
console.log(Object.is(Test.getUniqueInstance(), Test.getUniqueInstance()));