克罗克福德在 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/