0

How do I call a method on an array of objects in javascript? I created an object with certain properties and methods. Then created additional objects. I set up my additional objects in an array. Now, I want to use a for loop to call a method on each of the objects in the array without having to write console.log each time. Thanks.

//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 Answer 1

2

What you're trying to do is this:

console.log(rabbits[i].describeMyself());

But there's a problem here, because describeMyself() itself logs to the console and doesn't return anything, so what you would see in the console is:

I am a fluffy rabbit
undefined
I am a happy rabbit
undefined
I am a sleepy rabbit
undefined

To remedy this, I suggest changing the definition of Rabbit to the following:

function Rabbit(adjective) {
    this.adjective = adjective;
}

Rabbit.prototype.describeMyself = function() {
    return "I am a " + this.adjective + " rabbit";
};

so that it returns a string instead. Placing the function on the prototype, while a completely separate matter, should offer you some performance benefits as well since you won't be making a new copy of describeMyself for each Rabbit.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.