博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

四大规则理解JS原型链

Posted on 2025-08-17 08:40  kpi311  阅读(7)  评论(0)    收藏  举报

四大规则理解JS原型链

什么是原型链

这里这里

四大规则

规则1 __proto__prototype

1 对象拥有__proto__属性

2 函数拥有prototype属性

推论:函数是对象,函数也拥有__proto__


规则2 构造函数规则(new规则)

1 实例对象的constructor属性指向构造函数

2 实例对象的__proto__指向构造函数的prototype

// eg

let a = new A

a.constructor === A

a.__proto__ === A.prototype

规则3 继承规则

1 构造函数的prototype指向父类实例。没有父类时,是一个空对象。简便起见,也可以称作A.prototype

2 子类构造函数的__proto__指向父类,顶级类构造函数的__proto__指向Function.prototype

eg: class B extends A

等价于 B.prototype = new A,B.__proto__ === A

// 延伸一下
let b = new B

b.__proto__ === B.prototype

// 已知:b.__proto__是A的实例对象,根据规则1,可以得到原型链
b.__proto__.__proto__ === A.prototype
a.__proto__ === b.__proto__.__proto__

规则4 特殊原型

1 Object.prototype, Function.prototype 是独立的原型对象;

2 Function.prototype.__proto__ === Object.prototype

3 Object.prototype.__proto__ === null


原型链图

根据上述4个规则,可以画出那张有名的原型链图。

chain

简而言之:Object.prototype是万法之祖,Function.prototype是函数之祖,null是无生一,一生二,二生三。