obj.prototype和Object.getPrototypeOf(obj)之间有什么区别

what is the difference between obj.prototype and Object.getPrototypeOf(obj)

本文关键字:obj 之间 什么 区别 prototype Object getPrototypeOf      更新时间:2023-09-26

我使用Object.create方法创建了一个对象,因此Object.create希望原型对象作为第一个参数,属性描述符是第二个参数。

var obj = Object.create({a:2},{b:{value:3}})

因此,{a:2}是obj的原型。但如果我正在寻找像obj.prototype这样的原型,则返回undefined,但如果我使用Object.getPrototypeOf(obj)进行检查,则返回{a:2}

你能告诉我这里怎么了吗?那么,Object.create中的第一个参数是什么?

感谢

您发现了JavaScript语言中最奇怪的一件事:prototype属性。在JavaScript中,对象通过原型链从父对象继承属性。

但JavaScript的工作原理是,对象的prototype属性不是该对象的原型,而是用作使用new从中创建的其他对象的原型的值。因此,Car.prototype将成为用new Car()创建新实例的原型的值。

在原型继承意义上,对象的原型实际上是Object.getPrototypeOf()。例如,您可以在理解JavaScript 中的原型属性中了解更多信息