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

Han*_*Sun 1 javascript prototype google-chrome object node.js

在Chrome 42.0中,我为myArray使用分配值var myArray = [1,2],

我希望Object.getPrototypeOf(myArray)会是这样的(从这里截图)..

图片1

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

在此输入图像描述

有没有人对此有任何想法?

T.J*_*der 5

因为控制台试图为您提供最有用的表示.它看到你传递的是一个数组(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".