闭包产生私有化变量,防止命名空间的污染

<script>
    /*下面三个函数分别和Deng形成了闭包,共同用Deng的闭包
    PrepareWife这个变量能用,但是无法访问,因为它不是对象生成的东西,是对象和原有空间生成的闭包,这就是私有化变量
    */
   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.sayPrapreWife=function(){
       console.log(prepareWife);
     }
   }
    var deng=new Deng('deng','xiaoliu')
  </script>

<script>
  var name='bcd'
  var init=(function(){
    var name='abc';
    function callName(){
      console.log(name);
    }
    //留出一个接口  传给init
    return function(){
      callName()
    }
  }())
   init();//执行的结果abc不是bcd  因为形成了闭包,闭包变量私有化,不污染全局变量

   /*入口函数取名为init,约定俗成的用法*/
   var initDeng=(function(){
     var name=123;
     function callName(){
       console.log(name);
     }
     return function(){
       callName()
     }
   }())
  </script>
  

在这里插入图片描述

<script>
    function Person(name) {
      /*
            new完以后的隐式操作
            var this={
                   makeMoney:function(){}
                   offer:function(){}
            }
            
      */
      var money = 100; //不给显示出来,只能通过方法来改,这就是私有化属性  外部不能访问  在方法的作用域链里
      this.name = name;
      this.makeMoney = function () {
        money++;
      }
      this.offer = function () {
        money--;
      }
      /*
       return this;  这样就产生了闭包
      */
    }
    var person = new Person()
  </script>
 <script>
    function Person(name,age,sex) {
      var a = 0;
      this.name=name;
      this.age=age;
      this.sex=sex;
      function sss(){
        a++;
        console.log(a);
      }
      this.say=sss;
    }
    var oPerson=new Person();
    oPerson.say();//1
    oPerson.say();//2
    var oPerson1=new Person();//new了个新的Person,产生了新的AO,和闭包
    oPerson1.say()//1

  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值