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

标签 javascript

我遇到过这个:

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® Language Specification说:

15.2.3.14 Object.keys ( O )

When the keys function is called with argument O, the following steps are taken:

... 6. Return array.

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

在 Windows 7 上的 Chrome 和 Firefox 上进行了测试。

这是怎么回事?应该是数组,对我来说看起来像数组,对象?

编辑:
typeof() 。呃。

最佳答案

数组是对象。

尝试在控制台中输入 typeof([1,2,3]) - 您还会得到 object 结果。

现在,如果您输入 Object.prototype.toString.call( [1,2,3] ),您将得到 [object Array],即有点用(并且您将获得与 Object.keys 的返回值相同的结果)。

如果您想要 bool 结果,只需使用 Array.isArray (请参阅 this related answer )

关于javascript - 为什么返回 Object.keys() 一个对象(看起来像数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642712/

相关文章:

javascript - 如果我们有 web worker,我们可以使用什么版本的 ECMAScript?

javascript - 验证javascript中的连字符只有一个

javascript - 具有多个提交按钮的条件表单验证

javascript - 在 AngularJS 上使用 nd-repeat 创建带有代表 future 20 年的数字的下拉列表的最佳方法是什么?

javascript - 在 Nodejs 中表示 Permission denied when entering DEBUG=app ./bin/www

JavaScript Array.length 返回 0

javascript - 如何循环这个函数?

javascript - 如何删除所有特殊字符?

javascript - 是否可以将 SVG 图像插入到页面上已渲染的现有 SVG 元素中?

javascript - IE8/9 中的 CSS3 动画