如何在javascript中调用对象数组上的方法?我创建了一个具有某些属性和方法的对象。然后创建其他对象。我在数组中设置了其他对象。现在,我想使用for循环来调用数组中每个对象的方法,而不必每次都编写console.log。感谢。
//create object Rabbit with adjective property and describeMyself method
function Rabbit(adjective) {
this.adjective = adjective;
this.describeMyself = function() {
console.log("I am a " + this.adjective + " rabbit");
};
}
//create three new objects in Rabbit class
var rabbit1 = new Rabbit("fluffy");
var rabbit2 = new Rabbit("happy");
var rabbit3 = new Rabbit("sleepy");
//create array of objects for rabbit class
var rabbits = [rabbit1, rabbit2, rabbit3];
//attempt to log describeMyself method for each object in the rabbits array using a for
// loop.
for(i = 0; i < rabbits.length; i++){
console.log([i].describeMyself());
}
答案 0 :(得分:2)
你要做的是:
console.log(rabbits[i].describeMyself());
但这里存在一个问题,因为describeMyself()
本身会记录到控制台并且不会返回任何内容,因此您在控制台中看到的是:
I am a fluffy rabbit
undefined
I am a happy rabbit
undefined
I am a sleepy rabbit
undefined
为了解决这个问题,我建议将Rabbit
的定义更改为以下内容:
function Rabbit(adjective) {
this.adjective = adjective;
}
Rabbit.prototype.describeMyself = function() {
return "I am a " + this.adjective + " rabbit";
};
以便它返回一个字符串。将功能放在原型上,虽然完全独立,但也应该为您提供一些性能优势,因为您不会为每个describeMyself
制作Rabbit
的新副本。