我正在尝试使用52个对象生成一副牌。我想将这些对象放在一个数组中,并能够访问属性。我成功创建了对象并将它们推送到数组。但是,尝试从数组中访问属性会返回“未定义”。我究竟做错了什么?谢谢你的帮助。
我尝试了以下内容,但他们不适合我:
console.log(cards[0].displayName);
console.log(cards[0]['displayName']);
console.log(cards[0][displayName]);
我也没有通过' for'来访问这些房产。循环。
var cards = [];
function card(value, suit, image){
this.value = value;
this.displayName = value + ' of ' + suit;
if (value == 1) this.displayName = 'Ace of ' + suit;
if (value == 11) this.displayName = 'Jack of ' + suit;
if (value == 12) this.displayName = 'Queen of ' + suit;
if (value == 13) this.displayName = 'King of ' + suit;
if (value >= 11) this.value = 10;
this.suit = suit;
this.image = image;
}
function generateDeck(){
for (var i = 1; i <= 13; i++){
window['Hearts' + i] = new card(i, 'Hearts');
cards.push('Hearts' + i);
window['Spades' + i] = new card(i, 'Spades');
cards.push('Spades' + i);
window['Clubs' + i] = new card(i, 'Clubs');
cards.push('Clubs' + i);
window['Diamonds' + i] = new card(i, 'Diamonds');
cards.push('Diamonds' + i);
}
}
答案 0 :(得分:0)
您想将card
个对象推送到数组:
function generateDeck(){
for (var i = 1; i <= 13; i++){
cards.push(
new card(i, 'Hearts'),
new card(i, 'Spades'),
new card(i, 'Clubs'),
new card(i, 'Diamonds')
);
}
}
答案 1 :(得分:0)
cards.push(变量)
你写了cards.push(&#39; hearts&#39; + i);
所以它是一个带有Number的String加法,它最终出现在一个名为hearts0或hearts1 ..
的字符串中保存在数组下。
你不保存卡实例为什么你想知道卡[0] .displayName = undefined ??
尝试eval(&#34; cards.push(heart&#34; + i +&#34;)&#34;);
但那没人会做。
cards.push(windows [&#39; hearts&#39; + i]);但这也没有人为什么你想要全局