在JavaScript中,建構函式(Constructor Function)是用來建立物件的特殊函式。
new
關鍵字來建立物件看看new
是什麼~
When a function is called with the new keyword, the function will be used as a constructor.
使用new關鍵字呼叫函式時,該函式被當作建構函式。
語法
new constructor(arg1, arg2,...,argN)
new
背後執行的步驟:
[[Prototype]]
屬性會被設定為建構函式的prototype
。範例:
function Book(title, author, page) {
this.title = title;
this.author = author;
this.page = page;
this.getSummary = function () {
return `這本書叫${this.title},是由${this.author}作者撰寫, 總共頁數${this.page}。`;
};
}
const book1 = new Book("JavaScript全攻略", "Peter", 315);
const book2 = new Book("前端初學者必讀", "小白", 250);
執行結果:
book1.getSummary(); //'這本書叫JavaScript全攻略,是由Peter作者撰寫, 總共頁數315。'
book2.getSummary(); //'這本書叫前端初學者必讀,是由小白作者撰寫, 總共頁數250。'
new
關鍵字呼叫Book建構函式時,會生成一個新的物件,並將this
指向該物件。new
關鍵字的話,會被當作一般函式執行。因為Book建構函式沒有回傳,所以印出為undefined
。//沒有加上new
const book3 = Book("book3","John",205);
console.log(book3); //undefined
book1
、book2
,兩者並沒有任何關係。console.log(book1 === book2); //false
__proto__
,會自動指向建構函式的prototype
屬性。console.log(book1.__proto__ === Book.prototype); //true
console.log(book2.__proto__ === Book.prototype); //true
在這個範例中,Book建構函式建立了兩個物件book1和book2,而每個物件都有title、author、page屬性和getSummary方法。
透過這樣的方式,可以更容易建立多個物件。
以上分享~謝謝!