Chrome 在JavaScript中,为什么Object.getPrototypeOf([1,2])返回一个空列表?

tvz2xvvm  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(85)

在Chrome 42.0中,我使用var myArray = [1,2]myArray赋值,
我希望Object.getPrototypeOf(myArray)会是这样的(来自here的屏幕截图)。

然而,当我在REPL中评估代码时,我只得到一个空列表:

有人对此有什么想法吗?

nnt7mjpx

nnt7mjpx1#

因为控制台正试图为您提供您所要求的最有用的表示。它看到你传递给它的是一个数组(Array.isArray(Object.getPrototypeOf([1,2]))true),所以它使用它的显示数组的机制来显示它。因为所有数组继承的原型数组都是空的,所以只能看到[]
它对非数组对象做同样的事情:

Object.getPrototypeOf({foo:"bar"})
=> Object {}
  • (我正在使用Chrome。)*

控制台对你传递给他们的东西做了相当多的解释。有些解释并不总是有用的。范例:

var a = [];
=> undefined
a.foo = "bar";
=> "bar"
a
=> []

console.log(a)显示了更有用的

[foo:"bar"]

例如,具有非元素属性foo的数组,其值为"bar"

相关问题