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指向原构造函数
网友评论