这是怎么回事?
var x = {length:3, '0':'foo', '1':'bar','2':'f', splice:function(){}}
这实际上创建了一个数组:
["foo", "bar", "f"]
此结构语法的文档在哪里?
它也很聪明:
更改为:(注意 0、1、3)
var x = {length:3, '0':'foo', '1':'bar','3':'f', splice:function(){}}
会弄乱数组,它会是:
["foo", "bar", undefined × 1]
此外,删除拼接功能:
var x = {length:3, '0':'foo', '1':'bar','2':'f'}
产量:(常规对象)
Object
0: "foo"
1: "bar"
2: "f"
length: 3
__proto__: Object
所以我有两个问题:
这个结构是什么?
长度,元素,拼接
假设我有
['john','paul','yoko']
现在我想创建对象var x = {length:3, '0':'john', '1':'paul','2':'yoko', splice:function(){}}
我该怎么做?
最佳答案
数组只不过是一个对象,实现了一些方法,当你制作console.log(x)
时,你的控制台会识别数组的模型,并按照配置显示它。
Array
是 Javascript 中默认可用的对象,浏览器对它的处理方式与其他对象略有不同(请参阅@MathiasSchwarz 评论),但在其结构,它是一个像其他对象一样的对象(有一些方法可以调用,你可以添加索引。虽然,你通常不会像在“普通”对象中那样使用字符串索引,因为它的目的不是那样使用) .
但是你的对象并不是真正的数组
,你可以做任何你想做的事而不用引用控制台中显示的内容。
关于javascript - 在 JavaScript 中按对象创建数组(反之亦然)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119105/