闭包

 var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());
结果为 The Window
 var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };
    }
  };
  alert(object.getNameFunc()());
结果为 My Object
this 指针指定的函数不一样

 我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,这是本人自己的理解

var data=[];

for (i=0;i<3;i++){
  data[i]=function(){
       console.log(i);
     }
   }

data[0]();
data[1]();
结果为3

 

var data = [];

for (var i = 0; i < 3; i++) {
  data[i] = (function (i) {
        return function(){
            console.log(i);
        }
  })(i);
}

data[0]();
执行的结果为 0;
他会把值保存到内存中

 

posted @ 2017-09-15 14:37  开始战斗  阅读(134)  评论(0编辑  收藏  举报