2015-07-10 54 views
0

这里是我的代码,我试图打印工人的价格财产和士兵对象使用JavaScript阵列打印对象的属性

var army = [worker, soldier]; 
 

 
var worker={ 
 
\t name:'Worker', 
 
\t price : 10, 
 
\t ammount : 0, 
 
\t award:0, 
 
\t //award : 5/11, 
 
\t time : 1000, 
 
\t defense: 10, 
 
\t attack: 5 
 
} 
 

 
var soldier={ 
 
\t name:'Soldier', 
 
\t price : 50, 
 
\t ammount : 0, 
 
\t award:0, 
 
\t //award : 0.75, 
 
\t time : 1000, 
 
\t defense: 30, 
 
\t attack: 15 
 
} 
 

 
for (var i=0; i<army.length; i++){ 
 
\t alert(this.price); 
 
}

你有什么想法,我怎么也进不了价格这些对象的属性?

+0

console.log(这个)会告诉你为什么它不起作用。它应该是'军队[i]。价格' – epascarello

回答

1

在对象初始化之前,您将未定义的变量分配给军队阵列。将第一行移到工人和士兵之后。

而且,for循环中的变量this不引用任何内容。改为使用army[i],或者您可以指定var this = army[i];

var worker = { 
 
    name: 'Worker', 
 
    price: 10, 
 
    ammount: 0, 
 
    award: 0, 
 
    //award : 5/11, 
 
    time: 1000, 
 
    defense: 10, 
 
    attack: 5 
 
} 
 

 
var soldier = { 
 
    name: 'Soldier', 
 
    price: 50, 
 
    ammount: 0, 
 
    award: 0, 
 
    //award : 0.75, 
 
    time: 1000, 
 
    defense: 30, 
 
    attack: 15 
 
} 
 

 
var army = [worker, soldier]; 
 

 
for (var i = 0; i < army.length; i++) { 
 
    alert(army[i].price); 
 
}

+0

哦,是的,的确,非常感谢! – user3241709

0

定义后army阵列创建其他阵列:

var army = [worker, soldier]; 

然后使用army[i]从每个对象得到的价格:

for (var i=0; i<army.length; i++){ 
    alert(army[i].price); 
}