使用带有对象的for循环打印出每个唯一对象的属性

时间:2012-03-21 08:14:40

标签: javascript oop object for-loop

我正在尝试一些新的东西,而且我对目前的想法有疑问。我还是新手,并试图掌握使用物品的基本知识,所以我可能会完全偏离这个但是我想我可能会问你们所有我正在做什么都有机会工作。

// first we can make the instructor
function Rabbit(adjective) {
    this.adjective = adjective;
    this.describeMyself = function() {
        console.log("I am a " + this.adjective + " rabbit");
    };
}

// now we can easily make all of our rabbits
var rabbit1 = new Rabbit("fluffy");
var rabbit2 = new Rabbit("happy");
var rabbit3 = new Rabbit("sleepy");

for (i=1;i<=3;i++){
    //console.log("rabbit"+i);
    var tempRabbit = "rabbit"+i;
    console.log(tempRabbit.adjective);
}

我想使用for循环为我创建的每个兔子对象添加数字,然后打印出已经传入的形容词。

4 个答案:

答案 0 :(得分:3)

大多数人将兔子存放在阵列中。这使得管理这些奇妙生物不断增长的人口变得更加容易。

以下是一个例子:

var rabbitArray = [
    new Rabbit("fluffy"),
    new Rabbit("happy"),
    new Rabbit("sleepy")
];

for (var i=0;i<rabbitArray.length;i++) {
    console.log(rabbitArray[i].adjective);
}

你也可以将新兔子推入你所拥有的阵列中。有特殊的方法:

rabbitArray.push(new Rabbit("stubborn"));

如果您需要有关如何使用阵列简化库存管理的更多信息,请参阅此文档:Javascript Arrays

答案 1 :(得分:1)

在您的代码中:

> for (i=1;i<=3;i++){
>     //console.log("rabbit"+i);
>     var tempRabbit = "rabbit"+i;
>     console.log(tempRabbit.adjective);
> }

tempRabbit 的值是一个字符串,字符串没有形容词方法。由于您的Rabbit对象已分配给全局变量,因此您可以将它们作为全局对象的命名属性进行访问。在浏览器中, window 对象本质上是全局对象,因此您可以使用方括号表示法:

console.log(window[tempRabbit].adjective);

然而,将兔子放入阵列并将其作为成员访问(其他答案)可能更好。

答案 2 :(得分:0)

您可以使用eval:

eval('var tempRabbit = rabbit'+i+';');

这将创建并评估字符串。 你必须知道有些人发现eval可怕。

答案 3 :(得分:0)

您可以使用数组,然后通过索引访问它。

var rabbits=[];
rabbits[0]= new Rabbit("fluffy");
rabbits[1] = new Rabbit("happy");
rabbits[2] = new Rabbit("sleepy");