要查询任何对象的原型对象,都可以把该对象传给Object.getPrototypeOf()
方法。
查看一个对象的原型对象:

用字面量{}
创建的对象等同于用构造函数Object
创建的对象,都使用Object.prototype
作为其原型。
查看一个数组(数组也是对象)的原型对象:

用字面量[]
创建的数组等同于用构造函数Array
创建的数组,都使用
作为其原型。Array
.prototype
查看一个函数(函数是一种特殊的对象)的原型对象:

用字面量()=>{}
(箭头函数)创建的函数等同于用构造函数Function
创建的函数,都使用Function.prototype
作为其原型。
顺带提一嘴:推荐使用函数声明或函数表达式创建函数,而不应该使用构造函数Function
创建函数,因为把字符串解析为JavaScript
脚本会有安全风险。
除了Object.getPrototypeOf()
以外,JavaScript的一些早期浏览器支持通过对象的__proto__
属性查看它的prototype
特性,这个属性很早以前就已经被废弃了,但网上仍然有很多已有代码依赖__proto__
,因此ECMAScript标准要求所有浏览器必须支持它(尽管标准并未要求,但Node也支持它)。

还有一种间接引用对象原型的方法,就是先使用对象的constructor
属性引用对象的构造函数,再使用构造函数的prototype
属性引用构造函数实例的原型对象(构造函数的prototype
属性指向的并不是构造函数自身的原型对象,而是通过构造函数创建的实例的原型对象)。

({})
写法是避免{}
被解释成代码块,所以给{}
套上了()
。
这种通过对象的constructor
属性间接引用对象的原型也是不推荐的!因为constructor
的属性值是可以修改的,所以得到的结果不一定准确!
因此,在实际应用中,我们更推荐使用Object.getPrototypeOf()
方法来查询一个对象的原型对象。