闭包实现封装,属性私有化

<script>

    function Deng(name, wife){
      var prepareWife = "xiaozhang";
      this.name = name;
      this.wife = wife;

      this.divorce = function(){
        this.wife = prepareWife;
      }

      this.changePrepareWife = function(target){
        prepareWife = target;
      }

      this.sayPrepareWife = function(){
        console.log(prepareWife);
      }
    }

    var deng = new Deng('deng', 'xiaoliu')

  </script>
闭包私有属性

  

  外部执行的divorce可以用内部变量,因为this.divorce在对象上,由于对象返回了,这个方法也被返回了,因为闭包,这个函数被存储到了外部,所以储存了这个函数的执行期上下文,var prepareWife被三个函数公用,这三个函数共同用Deng的AO,所以可以在外部随意存取。

 

  deng.prepareWife是undefined,表面上看起来不是自己的,但是实际上只有对象自己通过对象自己设置的方法可以去操作他。外部用户通过对象.prepareWife是看不到的,只有自己能看到,这就是闭包的私有化运用。

posted @ 2020-06-01 09:03  桃白白の  阅读(406)  评论(0编辑  收藏  举报