MST
星途 面试题库

面试题:JavaScript 中 prototype 如何实现继承

请详细描述在 JavaScript 里,如何利用 prototype 特性来实现对象间的继承,并给出具体代码示例。
11.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

在JavaScript中,利用prototype特性实现对象间继承的步骤如下:

  1. 定义父构造函数

    • 父构造函数用于初始化父对象的属性和方法。
  2. 定义子构造函数

    • 子构造函数用于初始化子对象的属性,并且要通过callapply方法调用父构造函数,以确保继承父对象的属性。
  3. 设置原型链

    • 将子构造函数的prototype设置为父构造函数的一个实例,这样子对象就能访问父对象原型上的方法。
  4. 修正构造函数指向

    • 由于将子构造函数的prototype设置为父构造函数的实例后,子构造函数的prototype.constructor会指向父构造函数,所以需要手动将其修正为指向子构造函数。

以下是具体代码示例:

// 1. 定义父构造函数
function Animal(name) {
    this.name = name;
}

// 给父构造函数的原型添加方法
Animal.prototype.speak = function() {
    console.log(this.name +'makes a sound.');
};

// 2. 定义子构造函数
function Dog(name, breed) {
    // 调用父构造函数,继承属性
    Animal.call(this, name);
    this.breed = breed;
}

// 3. 设置原型链
Dog.prototype = new Animal();

// 4. 修正构造函数指向
Dog.prototype.constructor = Dog;

// 给子构造函数的原型添加方法
Dog.prototype.bark = function() {
    console.log(this.name +'barks.');
};

// 创建一个Dog实例
const myDog = new Dog('Buddy', 'Golden Retriever');
myDog.speak(); // 输出: Buddy makes a sound.
myDog.bark();  // 输出: Buddy barks.