单例模式
function Singleton(name) {
this.name = name;
this.instance = null;
}
Singleton.getInstance = function(name) {
if(!this.instance) {
this.instance = new Singleton(name);
}
return this.instance;
}
let a = Singleton.getInstance('singleton1');
let b = Singleton.getInstance('singleton2');
console.log(a === b);
function Singleton1(name) {
this.name = name;
}
Singleton1.getInstance = (function() {
let instance = null;
return function(name) {
if(!instance) {
instance = new Singleton1(name);
}
return instance;
};
})();
let c = Singleton1.getInstance('singleton3');
let d = Singleton1.getInstance('singleton4');
console.log(c === d);
function Singleton2(name) {
this.name = name;
}
const ProxySingleton2 = (function() {
let instance = null;
return function(name) {
if(!instance) {
instance = new Singleton2(name);
}
return instance;
};
})();
let e = new ProxySingleton2('singleton5');
let f = new ProxySingleton2('singleton6');
console.log(e === f);
const NAME_SPACE = {
a: function() {
console.log('a');
},
b: function() {
console.log('b');
}
};
const ROOT = {};
ROOT.nameSpace = function(name) {
const partName = name.split('.');
let current = ROOT;
for(let i in partName) {
if(!current[partName[i]]) {
current[partName[i]] = {};
}
current = current[partName[i]];
}
};
ROOT.nameSpace('desktop');
ROOT.nameSpace('doc.weiwl');
console.dir(ROOT);
const user = (function() {
let _name = 'weiwl', _age = 18;
return {
getUserInfo: function() {
return _name + '-' + _age;
}
};
})();