在 JavaScript 中,prototype 適合用於 需要創建多個具有相同功能的對象 的情況,特別是在需要共享方法或屬性時。這樣可以避免每次創建新對象時都重複定義相同的功能,從而節省記憶體。
以下是一個定義建構函式並使用 prototype 添加共享方法的例子:
// 定義一個建構函式
function Person(name, age) {
this.name = name;
this.age = age;
}
// 將共享方法添加到原型
Person.prototype.greet = function () {
console.log(`Hi, my name is ${this.name} and I am ${this.age} years old.`);
};
// 創建多個實例
const person1 = new Person("Alice", 25);
const person2 = new Person("Bob", 30);
// 調用共享方法
person1.greet(); // Hi, my name is Alice and I am 25 years old.
person2.greet(); // Hi, my name is Bob and I am 30 years old.
// 確認方法是否共享
console.log(person1.greet === person2.greet); // true
如果每個對象需要獨立的方法或屬性(比如需要每個對象有自己獨立的數據),那麼應該直接在建構函式中定義,而不是放在原型上。
例如:
function Animal(type) {
this.type = type;
this.getType = function () {
return this.type;
};
}
const cat = new Animal("Cat");
const dog = new Animal("Dog");
console.log(cat.getType === dog.getType); // false (每個實例都有自己獨立的 getType 方法)
這樣的設計會導致每個實例的方法佔用更多內存,因此應根據需求決定是否使用 prototype。