五张图带你了解 JS 原型链

125 阅读1分钟

prototype指向函数的原型对象,这是一个显式原型属性,只有函数才拥有该属性。每个对象都有_proto_,它是隐式原型属性,指向了创建该对象的构造函数原型。

01.png

04.png

03.png

05.png

02.png

function Person() {}
let f1 = new Person();
let f2 = new Person();

实例对象的 __proto__ 指向该构造函数的 prototype(原型对象)

f1.__proto__ = Person.prototype;
f2.__proto__ = Person.prototype;

Person.prototype本质也是普通对象

Person.prototype.__proto__ = Object.prototype;

原型链到此停止

Object.prototype.__proto__ = null;
Person.__proto__ = Function.prototype

Function.prototype 本质也是普通对象

Function.prototype.__proto__ = Object.prototype
function Object()
let obj1 = new Object();
let obj2 = new Object();

实例对象的 __proto__ 指向该构造函数的 prototype(原型对象)

o1.__proto__ = Object.prototype;
o2.__proto__ = Object.prototype;

Object本质也是函数

Object.__proto__ = Function.prototype