js原型链

function Person(){}

let p1 = new Person()
let p2 = new Person()
let obj = {}

p1.__proto__ =Person.prototype       
p2.__proto__ =Person.prototype 

Person.__proto__=Function.prototype
Person.prototype=Person.prototype

Person.prototype.__proto__=Object.prototype 
Person.prototype.constructor=Person

Function.__proto__ =Function.prototype
Function.prototype=Function.prototype

Function.Prototype.__proto__=Object.prototype
Function.constructor=Function

obj. __proto__ = Object.prototype

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

Object.prototype.__proto__ =null
Object.constructor=Object

放一张图


1566904-20190104144654692-1100182048.jpg

做一个总结,说的不对的希望指出
1.无论是构造函数还是实例对象都有proto
2.实例对象的proto 指向该对象构造函数的原型即p1.proto =Person.prototype
3.构造函数的proto 都指向Function.prototype,Function自身也不例外
4.所有原型都有proto 和constructor
5.除了Object.prototype的proto为null,其他所有原型的proto都指向Object.prototype
6.原型的constructor指向原构造函数

你可能感兴趣的:(js原型链)