普通函數跟箭頭函數中this的指向問題


箭頭函數和普通函數的區別如下。

普通函數:根據調用我的人(誰調用我,我的this就指向誰)

箭頭函數:根據所在的環境(我再哪個環境中,this就指向誰)

一針見血式總結:

普通函數中的this:

1. this總是代表它的直接調用者(js的this是執行上下文), 例如 obj.func ,那么func中的this就是obj

2.在默認情況(非嚴格模式下,未使用 'use strict'),沒找到直接調用者,則this指的是 window (常見的window的屬性和方法有: alert, location,document,parseInt,setTimeout,setInterval等)(約定俗成)

3.在嚴格模式下,沒有直接調用者的函數中的this是 undefined

4.使用call,apply,bind(ES5新增)綁定的,this指的是 綁定的對象

 

 

 

 

 

箭頭函數中的this

箭頭函數沒有自己的this, 它的this是繼承而來; 默認指向在定義它時所處的對象(宿主對象),而不是執行時的對象, 定義它的時候,可能環境是window; 箭頭函數可以方便地讓我們在 setTimeout ,setInterval中方便的使用this

要整明白這些, 我們需要首先了解一下作用域鏈:

當在函數中使用一個變量的時候,首先在本函數內部查找該變量,如果找不到則找其父級函數,

最后直到window,全局變量默認掛載在window對象下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM