如何在javascript中调用对象数组上的方法?

时间:2014-05-03 18:56:21

标签: javascript arrays properties

如何在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());
}

1 个答案:

答案 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的新副本。