var number = 2;
var obj = {
number : 4,
fn1 : (function(){
this.number *= 2;//这里this为window
number=number*2;
var number=3;
return function(){
this.number *= 2;//这里this为window
number *= 3;
alert(number);
}
})(),
db2 : function(){this.number *= 2}
};
var fn1 = obj.fn1;
alert(number);//4(匿名函数直接运行,this为window)
fn1();//9
//this.number是window下的number 4*2 = 8
//number是原来那个外部函数的number, 3*3 = 9
obj.fn1();//27
//this.number是obj下的number 8*2 = 8
//number是原来那个外部函数的number ,9*3 = 27
alert(window.number);//8
alert(obj.number);//8
- 1
小结:
1.立即执行函数立即执行所以Obj其实为:
var obj = {
number : 4,
fn1 : function(){
this.number *= 2;
number *= 3;
alert(number);
},
db2 : function(){this.number *= 2}
}
- 1
2.匿名函数中的this, 运行时为window(this在运行时才可以确定)