【问题标题】:How do I call a method on an array of objects in javascript?如何在javascript中调用对象数组的方法?
【发布时间】:2014-05-03 18:56:21
【问题描述】:

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

【问题讨论】:

    标签: javascript arrays properties


    【解决方案1】:

    你想要做的是:

    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";
    };
    

    以便它返回一个字符串。将函数放在原型上,虽然是完全独立的事情,但也应该为您提供一些性能优势,因为您不会为每个 Rabbit 制作 describeMyself 的新副本。

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多