我正在尝试Object.prototype.toString()
方法。我知道创建的对象是[[Prototype]]链接到Object.prototype
对象的,因此可以访问此方法。但是,也可以调用Object.toString()
。我想知道当对象构造函数本身没有直接方法.toString()
时可以在哪里访问此方法。对象构造函数[[Prototype]]是否链接到其自己的原型对象?
Object.toString() // "function Object() { [native code] }"
[Object
是Function
,它是object
。
这很令人困惑,但是由于Object构造函数是一个函数,因此它共享常见的Object.prototype方法,并且当您在函数上运行toString
时,通常会返回该函数的代码。
对象构造函数[[Prototype]]是否链接到其自己的原型对象?
Object创建一个对象包装器,这意味着在Object constructor
上也可以使用已定义对象的所有可用方法,因此可以直接调用.toString()
。
这里是一个小证明:
const foo = {};
JSON.stringify(foo.__proto__.constructor) === JSON.stringify(Object.constructor) // true