MST

星途 面试题库

面试题:JavaScript 中构造函数如何通过原型链实现属性和方法的共享

请详细阐述在 JavaScript 里,构造函数是怎样利用原型链,让通过该构造函数创建的多个实例对象共享属性和方法的,并用代码示例说明。
19.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

原型链与构造函数共享属性和方法原理

  1. 构造函数与原型对象:在JavaScript中,每个函数都有一个prototype属性,这个属性指向一个对象,称为原型对象。当使用构造函数创建实例时,实例的__proto__属性会指向构造函数的原型对象。
  2. 属性和方法查找:当访问实例的属性或方法时,JavaScript 引擎首先在实例自身上查找。如果找不到,就会沿着__proto__指向的原型对象查找。如果在原型对象中找到了对应的属性或方法,就会使用它。这样,多个实例可以共享原型对象上的属性和方法。

代码示例

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

// 在原型对象上定义共享方法
Person.prototype.sayHello = function() {
    console.log(`Hello, I'm ${this.name}`);
};

// 创建两个实例
const person1 = new Person('Alice');
const person2 = new Person('Bob');

// 调用共享方法
person1.sayHello(); // 输出: Hello, I'm Alice
person2.sayHello(); // 输出: Hello, I'm Bob

在上述代码中,sayHello方法定义在Person.prototype上,person1person2两个实例都可以调用这个方法,因为它们的__proto__都指向Person.prototype。这就是通过原型链实现多个实例对象共享属性和方法的机制。