Javascript Object.getPrototypeOf(Object)和Object.prototype之间有什么区别?

Javascript Object.getPrototypeOf(Object)和Object.prototype之间有什么区别?,javascript,Javascript,为什么我会得到不同的结果?但如果我使用: >Object.getPrototypeOf(Object) [Function: Empty] >Object.prototype {} 一切都很好。是否有任何关于getPrototypeOf的地方我遗漏了???是所有其他对象从中继承的对象。它位于内置对象的根目录下。从MDN文档中: JavaScript中的所有对象都是对象的后代;所有对象都从Object.prototype继承方法和属性,尽管它们可能被重写[…] 是获取特定对象原型的

为什么我会得到不同的结果?但如果我使用:

>Object.getPrototypeOf(Object)
[Function: Empty]

>Object.prototype
{}
一切都很好。是否有任何关于getPrototypeOf的地方我遗漏了???

是所有其他对象从中继承的对象。它位于内置对象的根目录下。从MDN文档中:

JavaScript中的所有对象都是
对象
的后代;所有对象都从
Object.prototype
继承方法和属性,尽管它们可能被重写[…]

是获取特定对象原型的一种方便方法。从MDN文档中:

Object.getPrototypeOf()
方法返回指定对象的原型(即内部
[[prototype]]]

不同类型的对象可以有不同的原型

示例:

>Object.getPrototypeOf({})
{}
对象
是一个函数,因此它的原型是
函数。原型

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
/foo/
创建一个正则表达式,因此它的原型是
RegExp.prototype

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
[]
创建一个数组,其原型是
数组。原型

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
{}
创建一个简单的对象,它的原型是
对象。原型是所有其他对象继承的对象。它位于内置对象的根目录下。从MDN文档中:

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
JavaScript中的所有对象都是
对象
的后代;所有对象都从
Object.prototype
继承方法和属性,尽管它们可能被重写[…]

是获取特定对象原型的一种方便方法。从MDN文档中:

Object.getPrototypeOf()
方法返回指定对象的原型(即内部
[[prototype]]]

不同类型的对象可以有不同的原型

示例:

>Object.getPrototypeOf({})
{}
对象
是一个函数,因此它的原型是
函数。原型

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
/foo/
创建一个正则表达式,因此它的原型是
RegExp.prototype

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
[]
创建一个数组,其原型是
数组。原型

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true

{}
创建一个简单的对象,它的原型是
对象

> Object.getPrototypeOf(Object) === Function.prototype
true
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
> Object.getPrototypeOf([]) === Array.prototype
true
> Object.getPrototypeOf({}) === Object.prototype
true
尽管:

Object.getPrototypeOf(Object) === Function.prototype;    // true
Object.getPrototypeOf(Object) === Object.prototype;      // false
虽然Object.prototype和Function.prototype不同,但对象和函数的行为相同。 函数===其属性的内部[[prototype]],但对象的内部[[prototype]]不是其属性

看起来很奇怪(我没有看到任何其他类似的情况)


的确,对象是一个函数,数组也是,函数也是。所有这些都是“功能”。我们不应该说“对象是一级函数”吗?(而不是相反?只是开玩笑)

我有一个类似的问题:为什么

> Object.getPrototypeOf({}) === Object.prototype
true
尽管:

Object.getPrototypeOf(Object) === Function.prototype;    // true
Object.getPrototypeOf(Object) === Object.prototype;      // false
虽然Object.prototype和Function.prototype不同,但对象和函数的行为相同。 函数===其属性的内部[[prototype]],但对象的内部[[prototype]]不是其属性

看起来很奇怪(我没有看到任何其他类似的情况)


的确,对象是一个函数,数组也是,函数也是。所有这些都是“功能”。我们不应该说“对象是一级函数”吗?(而不是相反?只是开玩笑)

你没有真正解释你期望的结果,但我试图解释
Object.getPrototypeOf(Object)
Object.prototype
。你没有真正解释你期望的结果,但我试图解释
Object.getPrototypeOf(Object)之间的区别
对象.原型