首先,让我们了解几个概念,以便更好地理解这两个对象:在现实中,所有具有自己的属性和功能的程序结构都称为对象。面向对象:我们称之为面向对象,用对象结构来表示一个具体的事物。原型对象:我们把保存同类型所有子对象的公共成员的父类统称为原型对象。①所有对象(方法、方法原型等)都有自己的__proto__属性,称为隐式原型。对象的__proto__指向对象构造函数的原型ex:vara={x:1}varb=Object.create(a);a.isPrototypeOf(b)//true使用isPropertyOf获取对象是否是另一个对象的原型b.__proto__==a//true②方法(Function)也是一个对象,比较特殊。它不仅有其他对象的__proto__属性,还有自己特有的属性prototype(prototype属性),指向一个原型对象,prototype对象有一个constructor属性,指向构造函数。它的__proto__属性指向其构造函数ex:functionb(){}b.prototype//{constructor:?}constructor:?b()__proto__:Object指向原型对象b。prototype.constructor//?b(){}原型对象的构造函数指向构造函数B(b){this.b=b}letb=newB("C")b.__proto__===B.prototype//true一个对象的__proto__属性指向其构造函数的原型对象B.__proto__===Function.prototype//true一个方法的__proto__指向其构造函数的原型对象B.prototype.isPrototypeOf(b)//true检索B对象是否为b对象的原型对象B.prototype.__proto__===Object.prototype//trueb.__proto__===b.constructor.prototype//trueB===b.constructor//trueObject.prototype。__原型__;//null区别:1.对象有属性__proto__,指向对象的构造函数的原型对象。2、方法除了属性__proto__之外,还有属性prototype,它指向方法的原型对象。注意:Function.prototype.bind方法构造的函数是个例外,它没有prototype属性
