1、含义:就是对象的访问机制。从任何一个数据类型触发,由_proto_串联起来的链状结构,就是原型链
2、原型对象 :是函数天生自带的一个属性 , prototype 是一个对象数据类型
3、对象原型: 是对象天生自带的一个属性 , __proto__ , 指向所属构造函数的原型对象prototype
4、任何一个对象, 如果没有准确的构造函数, 那么看做是 Object 的实例 。所有的纯粹的对象 都是Object的实例
5、原型链的指向图

- function Person(name, age, gender) {
- this.name = name
- this.age = age
- this.gender = gender
- }
- Person.prototype.sayHi = function() {
- console.log('hello world')
- }
- const p1 = new Person('Jack', 18, '男')
- console.log(p1)
1、p1身上的_proto_指向哪里?
console.log(p1.__proto__ === Person.prototype) //true
2、Person的_proto_指向哪里?
console.log(Person.__proto__ === Function.prototype)
3、Function的__proto__ 指向哪里?
Function 是函数 有了__proto__
我们在访问Function的对象空间
本质是一个函数
只要是函数就是Function 的实例
Function自己是自己的实例,指向所属构造函数的原型对象
Function 叫做顶级函数
console.log(Function.__proto__ === Function.prototype)
4、Person.prototype的__proto__ 指向哪里?
只要出现 __proto__ 一定是对象特有
Person.prototype 是一个对象 , 而且是一个纯粹的对象
所有的纯粹的对象 都是Object的实例
指向 Object 的原型对象
console.log(Person.prototype.__proto__ === Object.prototype)
5、Function.prototype 的__proto__ 指向哪里?
只要出现 __proto__ 一定是对象特有
Function.prototype 是一个对象 , 而且是一个纯粹的对象
所有的纯粹的对象 都是Object的实例
指向 Object 的原型对象
Function.prototype.__proto__ === Object.prototype
6、Object 的__proto__ 指向哪里?
__proto__属性是对象特有的属性
Object是一个内置构造函数
现在是函数有了__proto__
说明我们在访问Object对象空间
本质是一个函数,只要是函数就是Function 的实例
指向 Function 的原型对象
Object.__proto__ === Function.prototype
7、Object.prototype 的__proto__ 指向哪里?
只要出现 __proto__ 一定是对象特有
Object.prototype 是一个对象 , 而且是一个纯粹的对象
只要是纯粹的对象都是Object的实例
指向Object的原型对象
最后的结果是null
Object.prototype.__proto__
叫做顶级原型
Object.prototype.__proto__ === null