闭包作用

闭包的作用:模仿块作用域、保存变量、封装私有变量
(1)模仿块作用域:通过构建立即执行函数

function create(count){
  (function(){
    for(var i=0;i<count;i++){
      console.log(i)
    }
  })
  alert(i)//报错,上面函数执行完,环境销毁
}

通过特权方法来访问(静态变量)私有变量和(静态方法)私有方法
在构造函数内部写特权方法,为每个实例绑定特权方法使之可以访问静态方法和变量

function Create(){
  var x=1
  //create私有方法
  function ss(){
    return false
  }
  //特权方法
  function Create(){
  var x=1
  //create私有方法
  function ss(){
    return false
  }
  //特权方法
  this.getX=function(){
    x++
    ss()
    return x
  }
}
var y=new Create()
var t=new Create()
console.log(y.getX())//2
console.log(t.getX())//2 每个实例都可以通过特权函数访问到Create的私有方法和变量,每个实例保存自己的引用不在原型上共享引用

在原型链上写特权方法,所有实例共享特权方法

(function create(){
  var x=1
  //create私有方法
  function ss(){
    return false
  }
  //构造函数
  Person=function(){//Person不能用var声明,不然在全局中访问不到
  }
  //特权方法
  Person.prototype.getX=function(){
    x++
    ss()
    return x
  }
})()//立即执行函数,初始化Person构造函数
var y=new Person()
var t=new Person()
console.log(y.getX())//2
console.log(t.getX())//3
y执行getX访问引用的x并+1保存
t执行getX访问引用的x并+1保存

两者区别:实力是否共享特权方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容