javascript中的this

this關鍵字在javascript中是非常讓人困惑的。我們必須記住一點,那就是this與定義無關,只與function調用的上下文有關

當一個function從屬於某個對象時,this指向該對象。

var obj={
  func: function(){
     console.log(this);
  }
};
obj.func();
此處this指向obj本身。
var  obj = function(){};
obj.prototype.func = function(){
  console.log(this);
};
var newObj = new obj();
newObj.func();
此種方式,this指向新創建的對象newObj;

當一個function從不屬於某個對象時,this指向全局對象window(嚴格模式下爲undefined);

var obj={
  func: function(){
     (function(){console.log(this);})();
  }
};
obj.func();
此處的this由於function沒用從屬於某個對象,所以this指向全局對象window(嚴格模式下爲undefined);

在call和apply中,this指向傳入的context;

var func = function(){
  console.log(this);
}
var obj = {};
func.call(obj);
func.apply(obj);
this指向obj;

在dom上附加事件時,this指向觸發事件的dom

<div οnclick="alert(this)">text</div>
this指向div這個dom;

在es6(es2015)中,箭頭函數不會改變this的指向。




發佈了97 篇原創文章 · 獲贊 18 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章