this的理解

this的理解

看了阮一峯的this講解,下面是個人理解:app

總結來講 this指向 調用this所在方法 的對象;函數

普通函數

例子1this

function test(){
this.x = 1;
console.log(x);
}
test();//1

由於調用test()方法是window即全局,因此這時的this指向全局code

爲了證實的確是改變了全局變量看下面的例子,在外面給x賦值了2,可是在test裏面仍是會被改變
例子2對象

var x = 2;
function test(){
this.x = 1;
console.log(x);
}
test();//1

構造函數

function test(){
this.x = 1;
}
x = 2;
var a = new test();
console.log(a.x);//1
console.log(x);//2

能夠看出第一個的x只是指向a這個對象,而第二個x是指向Window做爲全局變量繼承

做爲對象的方法屬性

function test(){
console.log(this.x);
}
var a = {};
a.func =test;
a.x = 2;
a.func();//2

這裏能夠看出來test方法是被a對象調用,因此this指向a,因此this.x 實際上是 a.x ,因此是2io

apply()方法

var x = 1;
function test(){
console.log(this.x);
}
var a = {};
a.x = 2;
a.func = test;
a.func.apply();//1

a.func.apply()表明是window繼承a的func屬性即test方法,因此執行了test ,這時這裏的this指向是window,由於是window調用的,因此是1console

相關文章
相關標籤/搜索