this是JavaScript中的一個關鍵字,但它的使用相比較其他的關鍵字更復雜。
this會在執(zhí)行上下文中綁定一個對象,在不同的執(zhí)行條件下會綁定不同的對象。
接下來,我們一起來徹底搞定this到底是如何綁定的吧!
一、理解this
1.1 為什么使用this
使用this有什么意義呢?下面的代碼中,我們通過對象字面量創(chuàng)建出來一個對象,在對象的幾個方法中都使用到了對象中定義的name屬性,
不使用this,那么我們的代碼會是下面的寫法:
let obj = {
cat: "Tom",
mouse: 'Jerry',
hobby: function() {
alert(`${obj.cat}喜歡追逐${obj.mouse}`);
},
eating: function() {
alert(`${obj.cat}吃${obj.mouse}`);
}
}
在方法中,使用cat和mouse的地方都需要通過obj的引用(變量名稱)來獲取。
但是這樣做存在一個很大的弊端:如果我將obj的名稱換成了story,那么所有方法中使用obj的地方都換成story.
事實上,在實際開發(fā)中,我們都會使用this來進行優(yōu)化:
let obj = {
cat: "Tom",
mouse: 'Jerry',
hobby: function() {
alert(`${this.cat}喜歡追逐${this.mouse}`);
},
eating: function() {
alert(`${this.cat}吃${this.mouse}`);
}
}
通過對比就會發(fā)現(xiàn),this可以讓我們更方便的引用對象,易于復用。