為什么要使用this?
this提供了一種更優(yōu)雅的方式來隱式傳遞一個(gè)對(duì)象的引用,可以將API設(shè)計(jì)的更加簡潔并且易于復(fù)用。
關(guān)于this如何工作的,有兩種誤解
- this指向函數(shù)本身
- this指向函數(shù)的作用域 (this在任何情況下都不指向函數(shù)的詞法作用域)
this是在運(yùn)行時(shí)候進(jìn)行綁定的葱蝗,并不是在編寫時(shí), 它的上下文取決于函數(shù)調(diào)用時(shí)的各種條件细燎。 this的綁定和函數(shù)聲明的位置沒有關(guān)系两曼, 只取決于函數(shù)的調(diào)用方式。
this的綁定規(guī)則
默認(rèn)綁定
無修飾的函數(shù)直接調(diào)用隱式綁定
當(dāng)函數(shù)有上下文對(duì)象時(shí)候玻驻,會(huì)隱式的把這個(gè)函數(shù)的this綁定到這個(gè)對(duì)象上
3.顯示綁定
通過call 和 apply 改變this指向
4.new調(diào)用
使用new來調(diào)用函數(shù)會(huì)執(zhí)行下面的操作
(1)創(chuàng)建一個(gè)新對(duì)象
(2)將構(gòu)造函數(shù)的作用域賦給新對(duì)象 (this就指向了這個(gè)對(duì)象)
(3)執(zhí)行構(gòu)造函數(shù)中的代碼 (為新對(duì)象添加屬性)
(4)返回新對(duì)象