【问题标题】:Using a for loop with objects to print out properties of each unique object对对象使用 for 循环打印出每个唯一对象的属性
【发布时间】:2012-03-21 08:14:39
【问题描述】:

我正在尝试一些新的东西,但我对当前的想法有疑问。我还是新手,正在尝试掌握使用对象的基础知识,所以我可能完全不了解这个,但我想我可能会问大家我正在做的事情是否有任何工作机会。

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

【问题讨论】:

标签: javascript oop object for-loop


【解决方案1】:

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

这是一个例子:

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

【讨论】:

  • 谢谢,我认为数组是最好的方法,但我只是想看看是否有一种方法可以将字符串与“i”变量结合使用并以这种方式访问​​属性。感谢所有快速回答的家伙。
  • 这也是一种可能性(请参阅其他答案),但是如果您尝试这样做 - 永远不要冒险向其他开发人员展示您的代码......好吧,除非您有人寿保险。
  • 我只是在学习 codeacademy.com 的课程时尝试不同的事情。再次感谢您的有用建议。
【解决方案2】:

在您的代码中:

> 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);

但是,最好将您的 Rabbit 放入一个数组中并作为成员访问它们(根据其他答案)。

【讨论】:

    【解决方案3】:

    您可以将 eval 用于:

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

    这将创建和评估字符串。 你要知道有些人觉得eval很糟糕。

    【讨论】:

    • 几乎所有人都觉得 eval 很糟糕 :-)
    • 一些?考虑到有许多更合适的选择,没有一个对 javascript 有一定了解的人会推荐这种方法。
    • 对于知识来说,谈论这个功能也不错。
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2016-01-10
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多