MST
星途 面试题库

面试题:JavaScript类继承中的原型链理解

在JavaScript中使用ES6类语法实现一个简单的继承结构,例如一个`Animal`类,有`name`属性和`speak`方法,然后创建一个`Dog`类继承自`Animal`,并添加`bark`方法。解释这个继承关系中的原型链是如何工作的。
50.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
class Animal {
    constructor(name) {
        this.name = name;
    }
    speak() {
        console.log(`${this.name} makes a sound.`);
    }
}

class Dog extends Animal {
    bark() {
        console.log(`${this.name} barks.`);
    }
}

在上述代码中:

  1. Animal类是基类,它有一个name属性和speak方法。
  2. Dog类通过extends关键字继承自Animal类,并且添加了bark方法。

关于原型链:

  • 当创建一个Dog实例时,Dog实例的__proto__指向Dog.prototype
  • Dog.prototype__proto__指向Animal.prototype,这就建立了继承关系。所以当调用Dog实例的speak方法时,JavaScript引擎会先在Dog.prototype上寻找该方法,如果找不到,就会沿着原型链到Animal.prototype上去寻找。
  • Animal.prototype__proto__指向Object.prototype,而Object.prototype__proto__null,这就是原型链的终点。如果在整个原型链上都找不到对应的属性或方法,就会返回undefined