美文网首页
闭包要点

闭包要点

作者: chiang24 | 来源:发表于2017-07-28 02:17 被阅读36次

    闭包

    1. 借助全局变量
        !function(){
        var user  = {
            name:'chiang',
            age:21
        }
        
        window.uesrGetter = {
          nameGetter:function(){
            return user.name    //拷贝了name的值
          },
          ageGetter:function(){
            return user.age
          },
          old:function(){
            user.age += 1
          }
        }
        }()
        
        !function(){
          window.userGetter.nameGetter()
          window.userGetter.ageGetter()
          window.userGetter.old()
        }()
    

    由于userGetter作为window的一个属性,所以其它地方可以访问到这个函数,又由于userGetter可以访问到user的属性,所以相当在于其他地方间接访问了user,但是不能让别的作用于修改user。

    1. 不借助全局变量
        !function(){
        function olderMaker(){
          var user  = {
            name:'chiang',
            age:21
          }
          return function(){
            user.age += 1
          }
          
          return older = olderMaker()
          older.call()
        }
        }()
    

    olderMaker为了让user有一个独立的作用域,return function是为了让其它作用域访问user

    相关文章

      网友评论

          本文标题:闭包要点

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