這里的this,為什么指向的是全局變量
var x =4;
? ? ?obj={
? ? ? ? ?x:3,
? ? ? ? ?bar:function(){
var x=2;
setTimeout(function(){
? ? var x=1;
? ? ?alert(this.x);
? ? ?},1000);
? ?}
};
obj.bar(); //4
var x =4;
? ? ?obj={
? ? ? ? ?x:3,
? ? ? ? ?bar:function(){
var x=2;
setTimeout(function(){
? ? var x=1;
? ? ?alert(this.x);
? ? ?},1000);
? ?}
};
obj.bar(); //4
2016-01-03
舉報
2016-01-03
在JavaScript中,我們可以通過重新聲明JavaScript變量,來覆蓋原來那個同名變量:
第一個x其實是window對象的屬性,
第二個x指的是obj對象的屬性,可以通過obj.x調(diào)用,
第三個x指的是bar函數(shù)中的局部變量,只能在bar函數(shù)中,才有效!
第四個也是局部變量,不同的是setTimeout()這個函數(shù)是window對象的方法。
那么this又是誰呢?this指的是調(diào)用當前函數(shù)的那個對象的x屬性!那個對象指的是window,所以,x指代的是第一個x,也就是全局變量!
你可以運行以下代碼,以便更好理解!