你不重视的JS基础 - 闭包、单例

78 阅读1分钟

闭包

  1. 定义

闭包指的是一个函数内部定义的函数,并且返回了这个函数的某些属性或变量。

从实践来说,闭包指的是代码中引用了自由变量,即使创建它的上下文已经销毁,但它仍然存在。

  1. 实现一个简单闭包

    function funA() {
      var a = 10
      return function() {
        alert(a)
      }
    }
    
    var b = funA()
    b()
    

怎么实现单例

单例就是一个类只能有一个实例对象。即匿名函数自调用返回一个实例

let Person = (function() {
  let instance
  function Person() {}
  return function () {
    return instance || (instance = new Person())
  }
})()

let obj1 = new Person()
let obj2 = new Person()
obj1.name = 'jjj'
obj2.name = 'aaa'

console.log(obj1.name) // 'aaa'
console.log(obj2.name) // 'aaa'