返回

深入理解 JS 原型对象与原型链:5 分钟入门指南

前端

在短短五分钟内,我们将揭开 JavaScript 原型对象和原型链的神秘面纱,带你踏上一段探索 JavaScript 面向对象编程精髓的激动人寰之旅。

JavaScript 的原型机制

JavaScript 是一种基于原型的语言。在 JavaScript 中,每个对象都有一个内部属性,称为 [[Prototype]] ,指向另一个对象——它的原型对象。原型对象本身也是一个对象,并且拥有自己的原型对象。这种对象之间的连接形成了一条被称为 原型链 的链式结构。

原型对象的作用

原型对象充当对象的模板。当一个对象尝试访问一个不存在的属性或方法时,JavaScript 会沿着原型链向上查找,直到找到该属性或方法为止。这种机制允许对象继承原型中的属性和方法,而无需显式定义它们。

创建自定义原型对象

我们可以使用 JavaScript 中的 Object.create() 方法创建自定义原型对象。例如,以下代码创建一个 Person 原型对象,该对象拥有一个 name 属性:

const Person = {
  name: 'John Doe'
};

继承原型

我们可以使用 Object.create() 方法来创建新的对象,并指定其原型对象。例如,以下代码创建一个 Developer 对象,它继承了 Person 原型对象的 name 属性:

const Developer = Object.create(Person);

现在,Developer 对象可以访问 name 属性,尽管它在 Developer 对象中没有显式定义:

console.log(Developer.name); // 输出: John Doe

原型链遍历

我们可以使用 Object.getPrototypeOf() 方法遍历原型链。例如,以下代码打印出 Developer 对象的原型链:

let currentProto = Developer;
while (currentProto) {
  console.log(currentProto);
  currentProto = Object.getPrototypeOf(currentProto);
}

输出:

{ name: 'John Doe' }
{ constructor: ƒ }

第一个对象是 Developer 原型对象,而第二个对象是 Object 的内置原型对象,它是所有对象的最终原型对象。

总结

JavaScript 的原型机制提供了一种灵活且可扩展的方式来实现面向对象编程。通过了解原型对象和原型链,我们可以构建出强大的、可重用的代码。现在,你可以自信地运用这些知识,让你的 JavaScript 代码更上一层楼!