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;
他会把值保存到内存中