在JavaScript中创建对象时遇到问题.
试图创建一副扑克牌,然后我可以显示我想要的.我很擅长HTML的东西来显示它们,只是有一个问题来理解我在JavaScript中做错了什么,这只是为我创建了未定义的卡片.
(function () {
function Card (rank, suit) {
this.rank = rank;
this.suit = suit;
};
function Deck() {
this.deck = new Array();
this.makeDeck = makeDeck;
this.shuffle = shuffle;
this.deal = deal;
}
function makeDeck() {
var ranks = new Array("A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K");
var suits = new Array("Clubs", "Diamonds", "Hears", "Spades");
this.deck = new Array(52);
var i, j;
for (i = 0; i < suits.length; i++) {
for (j = 0; j < ranks.length; j++) {
this.deck[i*ranks.length + j] = new Card(ranks[j], suits[i]);
document.write("Card made \n");
}
}
};
function shuffle() {
var i, n, j, temp;
for (i = 0; i < n; i++) {
for (j = 0; j < this.deck.length; j++) {
k = Math.floor(Math.random() * this.deck.length);
temp = this.deck[j];
this.deck[j] = this.deck[k];
this.deck[k] = temp;
}
}
document.write("Cards Shuffled");
};
function deal() {
if (this.deck.length > 0) {
return this.deck.shift();
}
else return null;
};
var deck = new Deck();
deck.makeDeck();
deck.shuffle();
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
var Card = new Card(deck.deal);
var c = JSON.stringify(Card);
document.write(this.deck[j]);
}
}
} ());
Run Code Online (Sandbox Code Playgroud)
这是有问题的行:
this.deck = new Card(ranks[j], suits[i]);
this.deck
应该是包含所有卡的数组,但是使用上面的行,您每次都用一张新卡覆盖它。
不使用this.deck = new Array(52)
,this.deck = []
而使用 ,将空数组初始化到 this.deck 。
然后使用this.deck.push(new Card(ranks[j], suits[i]))
将卡牌的所有组合推入你的牌库。
第一个选项的问题是array.push
效率不高。阅读本文以获取更多信息。对于 52 大小的数组来说,这并不重要,只需将其放在桌面上以供每个人参考即可。
或者,您可以用来this.deck[i] = new Card(ranks[j], suits[i])
填充数组。您可以使用this.deck = []
orthis.deck = new Array(52)
来实现此目的。两者都可以。
归档时间: |
|
查看次数: |
9028 次 |
最近记录: |