定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
说白了就是:就算你重复调用想去生成新的实例,但返回的仍然是这个实例,在js中也就是闭包的应用。
var singleton = (function () {
var animal
return function (name) {
if (!animal) animal = new Animals(name)
return animal
}
})()
function Animals(name) {
this.name = name
this.getName = function () {
console.log(this.name)
}
}
var animal1 = singleton('小猫咪')
var animal2 = singleton('大鲨鱼')
var animal3 = singleton('旺财')
animal1.getName() //小猫咪
animal2.getName() //小猫咪
animal3.getName() //小猫咪
console.log(animal1 === animal2) //true