重点:this指向问题与立即执行函数
代码:
<script>
window.number=1;
var obj={
"number":4,
"dbl":(function(){
console.log("function1"+this);//this 为window
this.number*=2; //number=2
return function(){
console.log("function2"+this);
this.number*=2;
console.log(this.number);
}
})()
};
// 第一步:立即函数一旦声明,立即执行
// 所以立即执行中的this指向 window,window.number=2,只执行了15.16 行并返回函数
var dbl=obj.dbl;
console.log(dbl);
// 此时的dbl等于如下函数
// function(){
// console.log("function2"+this);
// this.number*=2;
// console.log(this.number);
// }
dbl();//函数直接调用,那么函数中的this也指向 window ,此时window.number=4
//该函数被obj调用,改变this指向,指向obj,所以this.number为4,那么结果就变为8;
obj.dbl();
alert(window.number+obj.number);
//那么结果很清楚了,window.name=4,obj.name=8,最终结果为12
</script>