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