我正在编写一个角度的应用程序,并创建一个名为Workbooks的自定义服务数组,每个数组都有一个名为Views的自定义服务数组。我填充用一个简单的for循环阵列,但由于某种原因,这是产生意想不到的结果:javascript array奇怪地填充
在第一次迭代之后,存在阵列中的一个工作簿: Workbook 1
第二后,两个工作簿标题为工作簿2:Workbook 2
Workbook 2
之后的第三:Workbook 3
Workbook 3
Workbook 3
等。这怎么可能发生?以下是创建工作簿并将其添加到阵列的代码的简化版本:
for (var i = 0; i < 3; i++) {
var workbook = Workbook;
workbook.setTitle("workbook " + (i + 1));
for (var j = 0; j <2; j++) {
var view = View;
view.setTitle("view " + (j + 1));
workbook.addView(view);
}
workbooks[i] = workbook;
//this next for loop can be used to print the array as described
for (var k = 0; k < workbooks.length; k++) {
console.log(workbooks[k].getTitle());
}
}
return workbooks;
这怎么会发生?第i个工作簿被分配一个标题,然后分配给数组中的第i个点。当i
为2时,如何将一个名为Workbook 3
的工作簿分配给数组中的第0个和第1个点以及第2个?
作为参考,这里是从应用程序的相关代码plunker。谢谢!
它们都是同一个对象,也许你在'var workbook = Workbook;'中缺少'new'; – bfavaretto
或“对象”。创建(Workbook)'如果'Workbook'是一个看起来像它的对象。 –