MST

星途 面试题库

面试题:JavaScript 中原型链属性查找机制的理解

请描述在 JavaScript 中,当访问一个对象的属性时,原型链的属性查找机制是如何工作的?并举例说明,假设存在构造函数 `Parent` 和 `Child`,`Child` 继承自 `Parent`,在 `Child` 的实例上访问一个不存在的属性时,查找过程是怎样的。
25.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

在JavaScript中,当访问一个对象的属性时,原型链的属性查找机制如下:

  1. 首先在对象自身的属性中查找,如果找到,则返回该属性的值,查找结束。
  2. 如果在对象自身属性中未找到,则会沿着原型链向上查找,即查找对象的[[Prototype]]指向的原型对象。
  3. 如果在原型对象中找到该属性,则返回该属性的值,查找结束。
  4. 如果在原型对象中未找到,继续沿着原型链向上查找,重复步骤2和3,直到原型链的顶端(Object.prototype)。如果在Object.prototype中也未找到,则返回undefined

例如:

function Parent() {
    this.parentProp = 'parent value';
}
Parent.prototype.parentProtoProp = 'parent prototype value';

function Child() {
    this.childProp = 'child value';
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

let childInstance = new Child();

// 访问不存在的属性
console.log(childInstance.nonexistentProp); 
// 首先在childInstance自身属性中查找,未找到
// 然后在Child.prototype中查找,未找到
// 接着在Parent.prototype中查找,未找到
// 最后在Object.prototype中查找,未找到,返回undefined