2012-03-21 47 views
0

我正在尝试新的东西,我遇到了与我当前的想法有关的问题。我还是个新手,并且试图掌握使用对象的基础知识,所以我可能完全脱离了这个基础,但我想我可能会问你,如果我正在做的事情有任何工作的机会。使用for循环与对象打印出每个独特对象的属性

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

+0

请缩进您的代码。 – 2012-03-21 08:15:51

+0

使用数组来存储3个对象,而不是创建3个独立的对象。 – Anurag 2012-03-21 08:19:00

+0

请参阅http://stackoverflow.com/questions/576055/constructing-javascript-variable-names-at-runtime – 2012-03-21 08:19:21

回答

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

+0

谢谢,我想一个数组是最好的方式来做到这一点,但我只是想看看是否有一种方法可以将字符串与“i”变量连接起来,并以这种方式访问​​属性。欣赏所有快速回答家伙。 – Hudspeth 2012-03-21 08:31:14

+0

这也是一种可能性(请参阅其他答案),但是如果您尝试这样做 - 绝不会冒险将代码显示给其他开发人员......好吧,除非您有人寿保险。 – bezmax 2012-03-21 08:33:06

+0

我只是尝试了不同的事情,同时从codeacademy.com做的教训。再次感谢您提供有用的建议。 – Hudspeth 2012-03-21 08:38:50

0

您可以使用eval有:

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

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

+0

几乎所有发现eval是可怕的:-) – 2012-03-21 08:19:38

+0

一些?没有人对JavaScript有合理的了解,因此给出了更多合适的选择。 – RobG 2012-03-21 08:25:34

+2

对于知识来说,谈论这个功能并不坏。 – 2012-03-21 08:28:53

0

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

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

在您的代码:

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

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

然而,可能更好地把你的兔在一个数组,访问它们的成员(每其他答案)。