在Chrome 42.0中,我使用var myArray = [1,2]为myArray赋值,我希望Object.getPrototypeOf(myArray)会是这样的(来自here的屏幕截图)。
var myArray = [1,2]
myArray
Object.getPrototypeOf(myArray)
然而,当我在REPL中评估代码时,我只得到一个空列表:
有人对此有什么想法吗?
nnt7mjpx1#
因为控制台正试图为您提供您所要求的最有用的表示。它看到你传递给它的是一个数组(Array.isArray(Object.getPrototypeOf([1,2]))是true),所以它使用它的显示数组的机制来显示它。因为所有数组继承的原型数组都是空的,所以只能看到[]。它对非数组对象做同样的事情:
Array.isArray(Object.getPrototypeOf([1,2]))
true
[]
Object.getPrototypeOf({foo:"bar"}) => Object {}
控制台对你传递给他们的东西做了相当多的解释。有些解释并不总是有用的。范例:
var a = []; => undefined a.foo = "bar"; => "bar" a => []
而console.log(a)显示了更有用的
console.log(a)
[foo:"bar"]
例如,具有非元素属性foo的数组,其值为"bar"。
foo
"bar"
1条答案
按热度按时间nnt7mjpx1#
因为控制台正试图为您提供您所要求的最有用的表示。它看到你传递给它的是一个数组(
Array.isArray(Object.getPrototypeOf([1,2]))
是true
),所以它使用它的显示数组的机制来显示它。因为所有数组继承的原型数组都是空的,所以只能看到[]
。它对非数组对象做同样的事情:
控制台对你传递给他们的东西做了相当多的解释。有些解释并不总是有用的。范例:
而
console.log(a)
显示了更有用的例如,具有非元素属性
foo
的数组,其值为"bar"
。