03.09 「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

此篇文章講解目錄:

  • 純粹的函數調用

  • 作為對象方法的調用

  • 作為構造函數調用

  • apply調用

純粹的函數調用

這是函數的最通常用法,屬於全局性調用,因此this就代表全局對象Global。

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

為了證明,this代表的是全局對象,我們在這裡對上述代碼進行一下修改

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

作為對象方法的調用

函數還可以作為某個對象的方法調用,這時this就指這個上級對象。

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

此時的this指向的就是調用時的o對象

作為構造函數調用

所謂構造函數,就是通過這個函數生成一個新對象(object)。這時,this就指這個新對象。

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

為了表明這時的this不是代表全局對象,和第一個this並不相同,我們對上面的代碼在進行一下修改:

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

apply調用

apply()是函數對象的一個方法,它的作用是改變函數的調用對象,它的第一個參數就表示改變後的調用這個函數的對象。因此,this指的就是這第一個參數。

「前端架構師30天快速掌握js18」之this關鍵字知識點詳解

apply()的參數為空時,默認調用全局對象。因此,這時的運行結果為0,證明this指的是全局對象。

所以第一個o.m.apply()的結果指向了全局對象,輸出0

當改成o.m.apply(o)之後,this指向了o對象,所以結果為1

大家好接下來我們會邀請前端架構師以連載的方式,通過30天的實戰系統講解JavaScript的專業知識,歡迎大家關注頭條號“互聯網IT信息”。


分享到:


相關文章: