JS如何查看对象的原型对象

要查询任何对象的原型对象,都可以把该对象传给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()方法来查询一个对象的原型对象。