前言
本文用最简单的 js 函数配合图的形式讲述 js 中的原型、原型链、构造函数、实例、null 之间的关系
准备
代码
function Person() {}const person = new Person()
打印输出
可以在 chrome 控制台中,执行 console.dir 打印内容
- 构造函数 Person 含有 prototype 和 proto

- 构造函数 Person 的原型含有 constructor 属性指回构造函数 Person,同时拥有 proto 属性指向 Object 的原型

- 构造函数 Person 的 proto 指向 Function 的原型
文字
名词解释
- proto:隐式原型
- prototype:构造函数的原型
constructor:原型的 constructor 属性,指向构造函数
文本解释
person通过Person构造函数 new 得到const person = new Person()
person的隐式原型指向构造函数Person的原型person.__proto__ === Person.prototype
构造函数
Person有prototype属性指向原型同时
Person拥有隐式原型__proto__指向Function的原型,代表构造函数Person也是一个Function的实例Person.__proto__ === Function.prototype
Person的原型拥有隐式原型__proto__指向Object的原型Person.__proto__ === Object.prototype
Person的原型拥有构造函数属性constructor指回构造函数PersonPerson.prototype.constructor === Person
最终
Object的原型拥有隐式原型__proto__指向nullObject.__proto__ === null
图
参考
附件
