只看一次絕對學不會的 JavaScript 原型指南(二):建構函式與 prototype 屬性
建構函式的概念與作用
什麼是建構函式(constructor function)?
在正式介紹 prototype 屬性之前,我們需要先認識與 prototype 屬性密切相關的建構函式(constructor function),這個詞會在本文中多次出現。
在 JavaScript 中,建構函式是一種特殊的函式,用於創建和初始化物件實例。建構函式的主要功能是設置新物件的初始狀態,將屬性和方法賦值給新物件。此外,建構函式通常以大寫字母開頭,以區分於普通函式。
當使用 new 關鍵字來調用函式時,這個函式就被認為是建構函式。以下是建構函式的一般語法:
function Person(name, age) {
this.name = name; // 初始化 name 屬性
this.age = age; // 初始化 age 屬性
// 可以執行其他初始化操作
}
建構函式與普通函式在語法上非常相似,乍看之下可能會分不清兩者之間具體的區別,以下我整理了它們在用途和調用方式上的一些重要區別:
- 用途:
- 建構函式:主要用於創建新的物件實例,並初始化該物件的屬性和方法。
- 普通函式:執行特定的任務或計算,並返回結果。
- 調用方式:
- 建構函式:使用
new關鍵字來調用,這會自動創建一個新物件,並將this綁定到這個新物件上。 - 普通函式:直接調用,不使用
new關鍵字,this綁定根據調用環境而定。
- 建構函式:使用
以下是兩者的區別範例:
// 普通函式
function greet() {
console.log("Hello!");
}
greet(); // Hello!
// 建構函式
function Person(name, age) {
this.name = name;
this.age = age;
}
let john = new Person('John', 30);
console.log(john.name); // John