this 使用於函式體中,是指呼叫函式的物件.
函式呼叫時 有兩種方式
1,明確呼叫函式的主體
例如 window.func1 window就是呼叫的主體,在 func1 中的this就指向window
2,直接執行函式
比如 func2()
在嚴格模式下, func2 內部的 this 就是 undefined // 很多瀏覽器執行都不是這樣
在非嚴格模式下, func2 內部的 this 就指向 執行上下文 .
如果外層沒有函式,就指向 window
有外層函式,就指向外層函式的 執行上下文 this
有一種特殊函式使用時 this的指向與普通的函式不同,那就是 箭頭函式
語法( 引數值 ) =>
簡單驗證
var b =window.name = 'window'
function
a()function
_a()
a();
//window
a.call(b);//
b_a();//
_a
明確呼叫函式的主體的方式有以下幾種:
1, 物件或直接量 . 函式()
2, 函式.call(物件,引數1,引數2...)
5, 函式.bind(物件)
需要注意一點:
上面幾種方式都是直接呼叫函式執行的,而bind卻是返回乙個函式,並且返回的函式再次執行bind時也不會再改變上下文的繫結
function.prototype._bind = function(context)
}
執行上下文
1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 w...
this執行上下文
this的指向為 誰呼叫當前this所在的函式,this就指向誰。也就是說,當前呼叫函式的那個物件自身就是this,就是當前的執行上下文。被滑鼠事件,鍵盤事件等觸發的函式 叫做事件處理函式,事件處理函式的this指向事件源 觸發事件的節點 事件處理函式第乙個引數是事件物件 備註 有名函式的this指...
執行上下文
js原理 原型鏈 執行上下文 事件迴圈 預備知識 1 棧 stack 棧是類似於陣列的一種資料結構。2物件引用 user1指向使用者物件 user1持有使用者物件的引用 var user1 var user2 user1 user2.name 張三 console.log user1.name,us...