>Object.getPrototypeOf(Object)
[Function: Empty]
>Object.prototype
{}
为什么我得到不同的结果?但如果我使用:Object.getPrototypeOf(Object)和Object.prototype有什么区别?
>Object.getPrototypeOf({})
{}
一切都很好。我错过了关于getPrototypeOf的点吗?
>Object.getPrototypeOf(Object)
[Function: Empty]
>Object.prototype
{}
为什么我得到不同的结果?但如果我使用:Object.getPrototypeOf(Object)和Object.prototype有什么区别?
>Object.getPrototypeOf({})
{}
一切都很好。我错过了关于getPrototypeOf的点吗?
Object.prototype
是所有其他对象从中继承的对象。对于内置对象,位于prototype chain的根。从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
。
我有一个类似的问题:为什么?
Object.getPrototypeOf(Object) === Function.prototype; // true
Object.getPrototypeOf(Object) === Object.prototype; // false
虽然:
Object.getPrototypeOf(Function) === Function.prototype); // true
Object.getPrototypeOf(Function) === Object.prototype); // false
对象和功能相同的行为WRT getPrototypeOf,虽然Object.prototype中和Function.prototype的是不同的。 Function ===其属性的内部[[prototype]],但Object的内部[[prototype]]不是它的属性。
看起来很奇特(我没有看到其他类似的情况)。
是的确,Object是一个函数,所以是Array等,所以是Function。所有都是'功能'。我们不应该说“物体是一流的功能”吗? (而不是相反?只是开玩笑)
你并没有真正解释你期望的结果,但我试图解释Object.getPrototypeOf(Object)和Object.prototype之间的区别。 – 2014-10-08 15:14:49