【问题标题】:looping through objects of the same type with different constructors javascript [duplicate]使用不同的构造函数遍历相同类型的对象javascript [重复]
【发布时间】:2013-09-20 21:01:53
【问题描述】:

我有这个代码

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

var rabbit1 = new Rabbit("fluffy");
var rabbit2 = new Rabbit("happy");
var rabbit3 = new Rabbit("sleepy");

rabbit1.describeMyself();
rabbit2.describeMyself();
rabbit3.describeMyself();

是否可以遍历同一类型的所有对象?

下面的方法似乎不起作用:

for (var e in Rabbit) {
return e.describeMyself();
}

【问题讨论】:

  • 把你的兔子放在一个像数组一样的集合中并遍历数组。

标签: javascript


【解决方案1】:

您可以这样做:使用 for-in 只能遍历对象的属性,但不能获取范围内定义的变量。您定义的是未绑定到任何对象的变量。

var obj = { //Define your rabbits here.
    rabbit1: new Rabbit("fluffy"),
    rabbit2: new Rabbit("happy"),
    rabbit3: new Rabbit("sleepy")
}

for (var prop in obj) { //Now iterate through them
    obj[prop].describeMyself();
}

Fiddle

为了更安全的一面:

for (var prop in obj) {
    if (obj.hasOwnProperty([prop])) { 
        obj[prop].describeMyself();
    }
}

【讨论】:

    【解决方案2】:

    没有。 JavaScript 并没有真正保留你创建的所有对象的列表,你必须自己做。或者,更好地说,不保留一个您可以排序的列表,presto-chango。尝试一个数组:

    var objects = []; //Our array
    
    for(var i = 0; i<5; i++){
        //Let's make 5 objects!
    
        objects.push(new Object()); //Add this object to the array
    }
    
    //Later on when needed:
    
    for(var i = 0; i<objects.length; i++){
        objects[i].myFunction();
    }
    

    【讨论】:

      【解决方案3】:
      var arr = [ rabbit1, rabbit2, rabbit3 ];
      
      for (var i = 0; i < arr.length; ++i)
      {
          arr[i].describeMyself();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-29
        • 2013-02-17
        • 1970-01-01
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        • 2018-09-15
        • 1970-01-01
        相关资源
        最近更新 更多