定义:确保一个类只有一个实例,而且自行实例化并向整个零碎提供这个实例。
说白了就是:就算你反复调用想去生成新的实例,但返回的依然是这个实例,在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