Menu Close

JavaScript 原型 (Prototype)

JavaScript Prototype(原型)详解

JavaScript 中,原型(Prototype) 是理解对象、继承、构造函数的核心机制之一。原型让我们能够实现对象之间的继承,是 JavaScript 中面向对象编程的重要基础。

原型是如何工作的?

一、什么是 Prototype?

每个 JavaScript 函数在创建时,都会自动获得一个名为 prototype 的属性,它是一个对象。这个 prototype 对象包含了该函数构造出的所有实例共享的属性和方法。

简单理解:

  • sayHello 定义在 Person.prototype 上;
  • 所有通过 new Person() 创建的对象都可以访问这个方法。

二、构造函数与原型的关系图示


也可以通过代码验证:


三、prototype 和 proto 的区别

名称 说明
prototype 函数对象的属性,指向将被用作原型的对象
__proto__ 实例对象的内部属性,指向其构造函数的 prototype


四、原型链(Prototype Chain)

JavaScript 中对象的属性访问是通过原型链进行的:

  1. 首先查找对象自身;
  2. 如果找不到,就查找其 __proto__(也就是构造函数的 prototype);
  3. 一直向上查找,直到找到 Object.prototype
  4. 如果仍未找到,返回 undefined


五、给所有对象添加方法

由于所有对象最终都会继承自 Object.prototype,我们可以向其添加方法(不推荐,可能污染全局):


六、构造函数与原型继承


七、ES6 中的 class 与原型的关系


实际上,sayHello 方法仍然是挂载在 Person.prototype 上的。


八、小结

原型知识点 描述
每个函数都有 prototype 属性 用于定义实例共享的方法
每个对象都有 __proto__ 属性 指向构造函数的 prototype
原型链 实现属性查找和继承
class 是语法糖 底层仍然基于 prototype

 

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in 对象与原型

发表回复