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

Using a for loop with objects to print out properties of each unique object

本文关键字:对象 属性 唯一 打印 for 循环      更新时间:2023-09-26

我正在尝试一些新的东西,但我对当前的想法有意见。我还是个新手,正在努力掌握使用对象的基本知识,所以我可能对此完全不了解,但我想我可能会问大家,我所做的是否有机会奏效。

// 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循环将数字添加到我创建的每个rabbit对象中,然后打印出它传递给它的形容词。

大多数人将兔子存储在数组中。这使得管理这些神奇生物不断增长的种群变得更加容易。

这里有一个例子:

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

在您的代码中:

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

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

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

然而,最好把你的兔子放在一个数组中,并作为成员访问它们(根据其他答案)。

您可以将eval与:一起使用

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

这将创建并计算字符串。你必须知道,有些人觉得eval很糟糕。

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

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