JavaScript 原型鏈?zhǔn)菍崿F(xiàn)對象與對象之間繼承關(guān)系的核心機(jī)制。這里將簡要介紹如何使用原型鏈:
首先,我們需要創(chuàng)建一個構(gòu)造函數(shù),它將作為我們創(chuàng)建的對象的基礎(chǔ)。構(gòu)造函數(shù)是一個普通的 JavaScript 函數(shù),但它用于初始化新創(chuàng)建的對象。
function Person(name, age) {
this.name = name;
this.age = age;
}
接下來,我們可以將方法添加到構(gòu)造函數(shù)的原型對象(prototype
)上。這樣,所有通過此構(gòu)造函數(shù)創(chuàng)建的對象都可以訪問這些方法。
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
現(xiàn)在,我們可以使用構(gòu)造函數(shù)創(chuàng)建對象實例,并通過原型鏈訪問在原型上定義的方法。
var person1 = new Person("Alice", 30);
person1.sayHello(); // 輸出 "Hello, my name is Alice"
要使用原型鏈實現(xiàn)繼承,我們可以在一個構(gòu)造函數(shù)的原型對象上設(shè)置另一個構(gòu)造函數(shù)的引用。這樣,子類可以訪問父類的屬性和方法。
function Student(name, age, course) {
Person.call(this, name, age); // 調(diào)用父類構(gòu)造函數(shù)并繼承其屬性
this.course = course;
}
// 設(shè)置原型鏈
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student; // 修復(fù)構(gòu)造函數(shù)指向問題
// 在子類原型上添加特定于子類的方法
Student.prototype.study = function() {
console.log(this.name + " is studying " + this.course);
};
var student1 = new Student("Bob", 20, "JavaScript");
student1.sayHello(); // 輸出 "Hello, my name is Bob"
student1.study(); // 輸出 "Bob is studying JavaScript"
通過這種方式,我們可以利用原型鏈在 JavaScript 中實現(xiàn)對象之間的繼承和方法共享。