MST

星途 面试题库

面试题:JavaScript 中如何通过原型链实现对象继承

请描述在JavaScript中,通过原型链实现对象继承的基本原理,并使用代码示例展示如何创建一个继承自父类的子类。
31.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

原型链实现对象继承的基本原理

在JavaScript中,每个对象都有一个 __proto__ 属性,它指向该对象的原型对象。当访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,JavaScript会沿着 __proto__ 链向上查找,直到找到该属性或方法,或者到达原型链的顶端(null)。

通过将子类的原型对象设置为父类的实例,子类就可以继承父类的属性和方法。这样,当在子类实例上访问属性或方法时,如果子类自身没有定义,就会从父类的原型对象中查找。

代码示例

// 定义父类
function Animal(name) {
    this.name = name;
}

Animal.prototype.speak = function() {
    console.log(this.name +'makes a sound.');
};

// 定义子类
function Dog(name, breed) {
    // 调用父类构造函数,绑定this
    Animal.call(this, name);
    this.breed = breed;
}

// 设置子类的原型为父类的实例
Dog.prototype = Object.create(Animal.prototype);
// 修正构造函数指向
Dog.prototype.constructor = Dog;

// 创建子类实例
const myDog = new Dog('Buddy', 'Golden Retriever');
myDog.speak(); // 输出: Buddy makes a sound.
console.log(myDog.breed); // 输出: Golden Retriever