JavaScript中的對象是由屬性和值組成的鍵值對,其中每個屬性都可以是基本類型值或函數。在對象上下文中,特殊的關鍵字“this”用于引用對象本身。
例如,在一個函數中,當對象的方法被調用時,該函數中的"this"指向該對象:
const person = { firstName: "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName; } }; console.log(person.fullName()); // 輸出 "John Doe"
這里,對象person中的方法"fullName()"返回對象的完整名稱。"this"關鍵字用于從方法中引用對象本身。
當對象通過函數傳遞時,this的值可能會發生變化。在以下示例中:
const person = { firstName: "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName; } }; function greeting() { return "Hello " + this.fullName() + "!"; } console.log(greeting.call(person)); // 輸出 "Hello John Doe!"
在這里,函數"greeting()"接收對對象"person"的引用。使用call()函數調用該函數,并將"person"作為函數的上下文傳遞。因此,this關鍵字在函數中指向對象"person"。
當使用箭頭函數時,this的值也可能會發生變化。
const person = { firstName: "John", lastName : "Doe", fullName : function() { return () =>this.firstName + " " + this.lastName; } }; const fullNameFunction = person.fullName(); console.log(fullNameFunction()); // 輸出 "John Doe"
在這里,箭頭函數繼承了其父級的上下文,因此this關鍵字在箭頭函數中指向對象"person"。
總之,在JavaScript中,this關鍵字用于引用當前對象。因此,了解this是編寫面向對象代碼的重要組成部分。