javascript - 可以将 Object 对象强制转换为 Array 对象吗?

标签 javascript

克罗克福德在 http://javascript.crockford.com/survey.html 中写道:

“创建新数组有两种方法:

var myArray = [];
var myArray = new Array();"


所以我对我正在阅读的一些 AJAX 代码中的这两行感到困惑:

var obj={};    // obj is an Object object (i.e. a hash table)
obj[4] = 'x';  // now obj is suddenly an Array object via an integer key?

在 JavaScript 中,对象和数组真的是同一件事,只是键类型有所不同吗?

换句话说,这与在 php 中我们可以使用名称(字符串)或整数作为哈希键的方式相同吗?

我已经在 Google 上搜索了有关此问题的答案,但似乎无法确定讨论此问题的文章。

我想到的一种可能性是,第一行可能是语法 lint,因为第二行在创建新的 Array 对象时覆盖了 obj 的先前定义。

最佳答案

它不会成为一个数组,它只是一个具有“4”属性的对象,如下所示:

var obj = {
  '4': 'x'
};

当用作像 obj['4'] = 'x'; 这样的属性时,它只是转换为字符串

关于javascript - 可以将 Object 对象强制转换为 Array 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186351/

相关文章:

javascript - 使 extjs textarea 不可编辑

javascript - 帮我理解 JS + CSS + HTML = Cool UI

javascript - 如何在 Angular 中使用复选框作为选项的下拉菜单?

javascript - 获取 Canvas 绘制的上下文线的边界(位置)

javascript - Masonry 插件图像优于其他图像

javascript - 如何打印 JavaScript 函数的原始字符串

javascript - 使用 Yeoman 的 Angular-fullstack 生成器时,如何访问前端的环境变量?

javascript - IE7 将两个按钮保持在同一行的问题

javascript - 在 Rails 中制作日期时间倒计时器

javascript - 加载时淡入背景图像