[英]Why passing function object to Object.keys() returns empty array?
[英]Why returns Object.keys() an object (looks like array)?
我遇到过这个:
var stdin = {123:1,423:1};
var stdout = Object.keys(stdin);
console.log(stdout); //["123", "423"]
console.log(typeof(stdout)); //object
console.log(stdout[0]) //123
15.2.3.14 Object.keys(O)
使用参数O调用keys函数时,将执行以下步骤:
... 6.返回数组 。
在Windows 7上测试Chrome和Firefox。
到底是怎么回事? 应该是数组,看起来像数组给我, 是对象吗?
编辑:
typeof() 。 Arrgh。
你为什么说这是一个对象? 在Array上运行typeof将始终返回'object'。
var arr = [1,2,3];
typeof arr --> "object"
试试吧
Array.isArray(arr) --> true
这是你想要的测试。
var stdin = {123:1,423:1};
Array.isArray(stdin) --> false
数组是对象。
尝试在控制台中输入typeof([1,2,3])
- 你也可以得到object
作为结果。
现在,如果你键入Object.prototype.toString.call( [1,2,3] )
,你将得到[object Array]
,这有点用处(你将获得与Object.keys
的返回值相同的结果) Object.keys
)。
如果你想要一个布尔结果,只需使用Array.isArray
(参见这个相关的答案 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.