考虑一个包含一组其他对象的类。
function Food= (){
this.apples = 8;
this.orange = 6;
this.peach = 3;
}
现在,我可以创建一个添加功能。
Food.prototype.add(food){
this.apple += food.apple;
this.orange+=food.orange;
this.peach+=food.peach;
}
然而,如果我想动态地想要在食物中添加另一种东西,food.prototype.add还会添加什么呢?
第一个问题是,是否有一种简单的方法可以在类中添加所有对象?
第二个问题是:我本可以编写如下代码。
function Food = (){
this.apples = 8;
this.orange = 6;
this.peach = 3;
this.addArray = [];
this.addArray.push(this.apples);
this.addArray.push(this.orange);
this.addArray.push(this.peach);
}
Food.prototype.add(food){
for (i=0, i<this.addArray.length, i++){
this.addArray[i]+=food.addArray[i];
}
}
这样,如果我想将escargot添加到我想要添加的内容中,我只需将其添加到addArray即可。
有没有办法可以制作类似的addSet或addObject。因此,不是拥有带索引的数组,而是可以使用带有名称的集合或对象?
答案 0 :(得分:1)
嘿,你也可以尝试一下......
Food.prototype.add(food){
for(var i in food)
{
if(this[i] != undefined)
{
this[i] += food[i];
}
}
}
答案 1 :(得分:1)
我认为你在寻找的是
function Food() {
this.apples = 8;
this.orange = 6;
this.peach = 3;
this.addArray = ["apples", "orange", "peach"];
}
Food.prototype.add = function(food) {
for (var i=0, i<this.addArray.length, i++) {
this[this.addArray[i]] += food[this.addArray[i]];
}
};
但是,如果你动态添加任意水果,我怀疑这是一个好主意。作为扩展课程的简单方法,是的,但除此之外,您最好使用正确的Map
。