繁体   English   中英

为什么返回Object.keys()一个对象(看起来像数组)?

[英]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

ECMAScript®语言规范说:

15.2.3.14 Object.keys(O)

使用参数O调用keys函数时,将执行以下步骤:

... 6.返回数组

JSFIDDLE: http//jsfiddle.net/wpVvv/1/

在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM