四種基本用法
1. 一般方法中,this代指全局對象 window
2. 作為對象方法調用,this代指當前對象
3. 作為構造函數調用,this 指代new 出的對象
function test(){ this.x = 1; } var o = new test(); alert(o.x); //1
4. 調用方法的apply和call方法,可以改變函數的調用對象/作用域 (this)用法:
f.apply([thisObj [,argArray] ]);
f.call([thisObject[,arg1 [,arg2 [,...,argn]]]]);
當省略 thisObj 或為 null 時,全局對象window作為調用對象/作用域 (this)
es6 箭頭函數 ,普通函數
箭頭函數的this
總是指向詞法作用域,也就是外層調用者obj
由於this
在箭頭函數中已經按照詞法作用域綁定了,所以,用call()
或者apply()
調用箭頭函數時,無法對this
進行綁定,即傳入的第一個參數被忽略
深入理解javascript作用域系列第二篇——詞法作用域和動態作用域