为什么数组可以在Javascript中将键值对行为存储为对象?

为什么数组可以在Javascript中将键值对行为存储为对象?,javascript,arrays,object,Javascript,Arrays,Object,我们通常使用一个对象来存储键值对,比如 var objs={}; objs['ios']=123 objs['android']=239 console.logobjs['ios'];//产出123 但是,我们发现数组可以执行与对象相同的行为 var arr1 = []; arr1['ios'] = 123 arr1['android'] = 239 console.log(arr1['ios']); // output 123 arr1['ios'] = 897 console.log(a

我们通常使用一个对象来存储键值对,比如

var objs={}; objs['ios']=123 objs['android']=239 console.logobjs['ios'];//产出123 但是,我们发现数组可以执行与对象相同的行为

var arr1 = [];
arr1['ios'] = 123
arr1['android'] = 239
console.log(arr1['ios']);  // output 123

arr1['ios'] = 897
console.log(arr1['ios']);   // output 897
这背后有什么原因吗?

如果你走到第一行,你会发现是这样的

JavaScript数组类是在 阵列的构造;哪些是高级的、类似列表的对象

javascript中并没有数据类型数组,因为数组只是类似列表的对象,其原型具有执行遍历和变异操作的方法


这就是问题数组中可以执行与对象相同的行为的原因。数组是类似列表的对象,因此这样做不会向数组中添加值,而是会向数组中添加属性。您可以检查该数组的长度,它仍然是0

var arr1 = [];
arr1['ios'] = 123
arr1['android'] = 239
console.log(arr1['ios']);  // output 123

arr1['ios'] = 897
console.log(arr1['ios']);   // output 897
var arr1=[]; arr1['ios']=123 arr1['android']=239 console.logarr1['ios']; console.log“长度为”,arr1.Length; //虽然对于..in不建议用于数组 对于arr1中的let键{ 控制台.logarr1[键]
}因为在JavaScript中,数组是一种特殊形式的对象,我应该说是.console.logtypeof arr1;//ObjectBut JSON定义了一个数组,这就是为什么当你用额外的属性字符串化一个JS数组时,你会失去额外的属性。但是会向数组中添加属性这是OPs的问题,为什么?