我正在开发一个javascript应用程序并且在对象构造函数方面遇到了一些麻烦。我将使甲板中的每张卡片成为一个对象,因此只需要构建这些对象的数组。这就是我所拥有的:
function card(suit1,number1) // Constructor
{
this.suit1 = suit1;
this.number1 = number1;
}
function makeDeck1() {
var deck1 = new Array()
deck1[0]= new card('S','A');
deck1[1]= new card('S','1');
}
function myFunction() {
makeDeck1();
alert('gman' + deck1);
}

<h2>Blackjack</h2>
<button onclick="myFunction()">Click me</button>
&#13;
基本上控制台告诉我&#34; deck1&#34;没有定义......所以这个过程有问题......
想知道是否有人可以对此有所了解。
谢谢! ģ
答案 0 :(得分:2)
为什么不使用像卡一样的课程? (P.S. Classes应以大写字母开头)。
function Card(suit, number) {
this.suit = suit;
this.number = number;
}
Card.prototype.toString = function() {
return this.suit + this.number;
};
function Deck() {
this.deck = [new Card('S', 'A'), new Card('S', '1')];
}
Deck.prototype.toString = function() {
return this.deck.join(",");
};
function myFunction() {
var deck = new Deck;
console.log('gman:' + deck);
}
<h2>Blackjack</h2>
<button onclick="myFunction()">Click me</button>
答案 1 :(得分:1)
控制台正在给出正确的错误,deck1
在myFunction()
内不存在,它在makeDeck1()
内声明且其范围仅限于此函数,您需要将其返回并分配给myFunction()
内的变量以便能够使用它。
function card(suit1, number1) {
this.suit1 = suit1;
this.number1 = number1;
}
function makeDeck1() {
var deck1 = []; // avoid new Array constructor
deck1.push(new card('S', 'A'));
deck1.push(new card('S', '1'));
return deck1;
}
function myFunction() {
var deck1 = makeDeck1();
alert('gman' + JSON.stringify(deck1));
console.log(deck1);
}
&#13;
<h2>Blackjack</h2>
<button onclick="myFunction()">Click me</button>
&#13;
答案 2 :(得分:1)
请不要赞成这一点,因为这是一个微不足道的答案,只是提供帮助
问题是您的变量仅存在于makeDeck1()
的范围内。你需要像这样返回值:
function card(suit1, number1) // Constructor
{
this.suit1 = suit1;
this.number1 = number1;
}
function makeDeck1() {
var deck1 = new Array()
deck1[0] = new card('S', 'A');
deck1[1] = new card('S', '1');
return deck1; // return it
}
function myFunction() {
var deck1 = makeDeck1(); // define it here
alert('gman ' + JSON.stringify(deck1)); // serialize it
}
&#13;
<h2>Blackjack</h2>
<button onclick="myFunction()">Click me</button>
&#13;
此外,通常使用title-case定义构造函数,因此Card
而不是card
。祝你好运。