2012-03-21 76 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對象已分配給全局變量,因此可以將它們作爲全局對象的命名屬性進行訪問。在瀏覽器中,窗口對象基本上是全局對象,所以你可以用方括號:

然而,可能更好地把你的兔在一個數組,訪問它們的成員(每其他答案)。