Angular 创建一个非原生数组

Angular creates a non native array

当我用

直接在我的视图中填充 model.files 时
<input type="file" ng-model= vm.files[0]>
<input type="file" ng-model= vm.files[1]>

我的 vm.files 看起来像这样(示例 A):

我需要这样(示例 B):

为了获得示例 B,我必须在我的控制器中执行 vm.files = new Array()

我想知道示例 A 中的数组与示例 B 中的数组之间的区别?

javascript 中是否有 2 种类型的数组?

JavaScript 中没有“2 种类型的数组”,这也不是 "creating a non native array"。它正在创建具有属性 01 的对象 files。这称为 Object Bracket Notation,它出现在 Angular 中,因为 Angular 将每个 属性 视为一个对象,除非它被提前定义;您是正确的,您需要使用 vm.files = new Array() 预分配 files 作为数组。

javascript中有两种类型的数组吗?没有。

第一个例子是一个 javascript 对象 有两个属性:01.

第二个例子是 javascript 数组,有两个元素:第一个和第二个。

区别很多:比如数组类型有经典的splicepushpop方法。对于所有差异,我建议您遵循 this 教程(并自己学习一些基本的 javascript)。