Skip to content

2. 原型、原型链 ​

难度等级:🟢 初级 分类:JavaScript 归档日期:2026-10-20


我们知道 JavaScript 是没有传统意义上的类的,class 其实也只是语法糖。原型、原型链就是 JS 实现属性共享和继承的机制。

JS 函数本身是一个对象,它通常[1]还拥有一个 prototype 属性,prototype 对象上有一个 constructor 属性指回函数本身。

当这个函数被当作构造函数 new 的时候,创建出来的实例对象会有一个内部属性 [[Prototype]],它指向构造函数的 prototype 对象。这样新对象就和构造函数的原型对象关联起来了。

[[Prototype]] 指向的原型对象本身也是一个对象,它也有自己的 [[Prototype]],以此类推,直到某个对象的 [[Prototype]] 指向 null。这条由 [[Prototype]] 串起来的链路就是原型链。

JS 在查找属性的时候,会先在对象自身上找;找不到,就沿着原型链逐级往上找;一直找到 null 都没有的话,就返回 undefined。

所以,如果原型上定义了一些属性和方法,实例对象就可以继承、共享它们。


  1. 箭头函数、对象方法简写、class 中的方法、async 函数,以及 bind 返回的函数都没有 prototype 属性,不能被 new。 ↩︎

个人面试题归档,持续更新中