咱們在JS代碼中時常會見到一個小小的this,好比:數組
var a=1;
let f=()=>console.log(this.a)
f()
複製代碼
那麼上面的this究竟是什麼意思呢?首先咱們知道全局的變量都會掛到window上(let聲明的變量不會掛在window上,這一點我在上一篇ES6中關於let的部分提到過),與此同時上面的代碼運行後會獲得1,那麼這裏咱們能夠暫時看做window=this
,那麼是否是this一直至關於window呢?咱們來分析一下。app
this是一個對象,這個對象是指向當前代碼中的所需的各種資源。函數
若是方法內部有this,如何肯定這個this的值呢?this
誰調用了this,this就指向誰!spa
(1)有明確的對象3d
例如:Obj.say();say 的當前對象是obj,因此say中的this 就指向obj。
複製代碼
(2)沒有明確的對象code
若是這個函數沒有明確說是哪一個對象的,則它確定是屬於window對象的,因此this就會指向window。
複製代碼
若是是call和apply的方式cdn
this指向第一個參數,例如:f.call(obj),f中的this指向obj。
複製代碼
在調用方法時,才知道this的真正指向!對象