在 JavaScript 中,可以使用借用構(gòu)造函數(shù)的方式來(lái)實(shí)現(xiàn)繼承父類(lèi)的屬性。所謂借用構(gòu)造函數(shù),就是在子類(lèi)的構(gòu)造函數(shù)中調(diào)用父類(lèi)的構(gòu)造函數(shù),來(lái)創(chuàng)建子類(lèi)對(duì)象時(shí)初始化一些屬性。
以下是一個(gè)示例代碼,其中使用了借用構(gòu)造函數(shù)的方式來(lái)繼承父類(lèi)的屬性:
// 定義一個(gè)父類(lèi) Person
function Person(name, age) {
this.name = name;
this.age = age;
}
// 定義一個(gè)子類(lèi) Student,繼承自 Person
function Student(name, age, grade) {
// 在子類(lèi)構(gòu)造函數(shù)中調(diào)用父類(lèi)構(gòu)造函數(shù),使用 call 方法借用 Person 的構(gòu)造函數(shù)來(lái)初始化 name 和 age 屬性
Person.call(this, name, age);
this.grade = grade;
}
// 創(chuàng)建一個(gè) Person 對(duì)象
var person = new Person('Tom', 30);
// 創(chuàng)建一個(gè) Student 對(duì)象
var student = new Student('Lucy', 18, 1);
console.log(person); // 輸出 Person { name: 'Tom', age: 30 }
console.log(student); // 輸出 Student { name: 'Lucy', age: 18, grade: 1 }
在上面的代碼中,定義了一個(gè)父類(lèi) Person 和一個(gè)子類(lèi) Student。在子類(lèi)的構(gòu)造函數(shù)中使用call(this, ...)來(lái)調(diào)用父類(lèi)的構(gòu)造函數(shù),通過(guò)這種方式來(lái)繼承父類(lèi)的屬性。在創(chuàng)建 Student 對(duì)象時(shí),除了可以初始化子類(lèi)自己的屬性外,也可以訪問(wèn)繼承自父類(lèi)的屬性。
需要注意的是,在使用借用構(gòu)造函數(shù)的方式繼承父類(lèi)屬性時(shí),子類(lèi)不能訪問(wèn)父類(lèi)原型上的方法。如果想讓子類(lèi)也能訪問(wèn)父類(lèi)原型上的方法,需要將父類(lèi)原型上的方法拷貝到子類(lèi)的原型上。