>Object.getPrototypeOf(Object)
[Function: Empty]
>Object.prototype
{}
为什么我得到了不同的结果?但如果我使用:
>Object.getPrototypeOf({})
{}
一切都很好。我错过了关于getPrototypeOf的任何一点吗?
答案 0 :(得分:4)
Object.prototype
是所有其他对象继承的对象。对于内置对象,它位于prototype chain的 root 。来自MDN文档:
JavaScript中的所有对象都来自
Object
;所有对象都从Object.prototype
继承方法和属性,尽管它们可能被覆盖[...]
Object.getPrototypeOf
是获取特定对象原型的便捷方法。来自MDN文档:
Object.getPrototypeOf()
方法返回指定对象的原型(即内部[[Prototype]]
)。
不同类型的对象可以有不同的原型。
示例:
> Object.getPrototypeOf(Object) === Function.prototype
true
Object
是函数,因此其原型为Function.prototype
。
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
/foo/
创建正则表达式,因此其原型为RegExp.prototype
。
> Object.getPrototypeOf([]) === Array.prototype
true
[]
创建数组,其原型为Array.prototype
。
> Object.getPrototypeOf({}) === Object.prototype
true
{}
创建一个简单的对象,其原型为Object.prototype
。
答案 1 :(得分:0)
我有一个类似的问题:为什么?
Object.getPrototypeOf(Object) === Function.prototype; // true
Object.getPrototypeOf(Object) === Object.prototype; // false
虽然:
Object.getPrototypeOf(Function) === Function.prototype); // true
Object.getPrototypeOf(Function) === Object.prototype); // false
尽管Object.prototype和Function.prototype不同,但对象和函数的行为与getPrototypeOf相同。 函数的内部[[prototype]] =其属性,但Object的内部[[prototype]]不是它的属性。
看起来很奇怪(我没有看到任何其他类似的情况)。
是的确,Object是一个函数,Array也是如此,Function也是如此。所有都是'功能'。我们不应该说"对象是一流的功能"? (而不是反向?只是开玩笑)
答案 2 :(得分:0)