JavaScript this關鍵字

 this是 JavaScript 語言的一個關鍵字。它是函數運行時,在函數體內部自動生成的一個對象,只能在函數體內部使用。函數的不一樣使用場合,this指向的對象也不一樣.總的來講,this就是函數運行時所在的環境對象。下面分四種狀況,詳細討論this的用法。
 
狀況一:純粹的函數調用
這是函數的最一般用法,屬於全局性調用,所以this就表明全局對象。
 
var x = 1;
function test() {
   console.log(this.x);
}
test();  // 1
 
狀況二:做爲對象方法的調用
看成爲對象的方法調用,這時this指向這個方法所屬的對象。
 
function test() {
  console.log(this.x);
}
 
var obj = {};
obj.test = test;
obj.x = 1;
 
obj.test(); // 1
 
 
狀況三: 做爲構造函數調用
所謂構造函數,就是經過這個函數,生成一個新對象,這時,this就指這個新對象。
 
var x = 2;
function test() {
  this.x = 1;
}
 
var obj = new test();
console.log(x) //2,代表全局變量x的值沒變
 
 
狀況四: apply 調用
apply()能改變當前函數的調用對象。它的第一個參數就表示要調用這個函數的對象,這時this指的就是這個對象。當參數爲空時,默認爲全局對象。
 
var x = 0;
function test() {
 console.log(this.x);
}
 
var obj = {};
obj.x = 1;
obj.m = test;
 
obj.m.apply() // 0
obj.m.apply(obj); //1
相關文章
相關標籤/搜索