【发布时间】:2014-01-31 09:02:04
【问题描述】:
我有以下示例构造函数:
function Loot(type, sellValue) {
this.type = type;
this.sellValue = sellValue;
}
我希望将这些值继承到其他对象中,然后将其推入数组中,例如:
var inventory = [];
var stone = new Loot("craft", 20);
inventory.push(stone);
var hat = new Loot("clothing", 80);
inventory.push(hat);
var coal = new Loot("ore", 5);
inventory.push(coal);
var diamond = new Loot("ore", 400);
inventory.push(diamond);
console.log(inventory);
但是,当我这样做时,我的库存显示为 (Loot, Loot, Loot, Loot),而不是物品的名称 (stone, hat, coal, diamond)。
我该如何解决这个问题?我想它需要某种形式的继承?
谢谢!
【问题讨论】:
-
你是什么意思,“库存读作 (Loot, Loot, Loot, Loot)”?你如何输出它?而你展示的只有一个项目?
-
@Bergi 说我已将多个“石头”推入数组和 console.log(inventory),它返回 [Loot, Loot, Loot, ...]。我已经编辑了问题以更好地解决它,谢谢!
-
如果你用过
console.log,那么Loot只是告诉你这个对象是由Loot函数构造的。单击它以展开它并显示属性。当您想要的是数组时,请不要使用已接受答案中建议的对象。 -
@Bergi 我已经进一步更新了这个问题。如果不是以前接受的答案,那么解决此问题的最佳方法是什么?
-
现在这是一个非常不同的问题。但是除非逻辑上必要,否则应该避免类层次结构。将另一个属性添加到您的 Loot 类(如类别)会更容易。
标签: javascript arrays object inheritance