美文网首页
闭包作用

闭包作用

作者: EO_eaf6 | 来源:发表于2020-09-01 22:33 被阅读0次

    闭包的作用:模仿块作用域、保存变量、封装私有变量
    (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保存
    

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

    相关文章

      网友评论

          本文标题:闭包作用

          本文链接:https://www.haomeiwen.com/subject/dhrbsktx.html