构造函数练习题:
用构造函数的办法创建一副扑克牌
扑克牌的问题:我们首先需要去思考如何表达这54张牌,这54张牌分别有不同的花色,大小王除外,就相当于一张牌有四种花色,然后总共从1~k有13张牌,我们就可以创建两个数组,第一个数组是表示牌的数字,第二个数组就是表示牌的花色,这样扑克牌的表示方式就变得清晰,然后我们在创建一副扑克牌的之前就可以先创建一张牌,然后再到一副扑克牌的创建,这里就用到构造函数的思想,就是我们创建一个创建一张牌的方法,今后再使用创建牌的时候都可以用这个方法,然后我们现在需要创建一副牌,就使用创建一张牌的这个方法创建54张牌即可。
/**
* @param {number} 表示数字
* @param {number} 表示花色
*/
//创建一张牌
function Poker (number,color){
this.number = number,
this.color = color,
this.print = function ()
{
if(number === 14)
{
console.log('joker');
return ;
}
if(number === 15)
{
console.log('JOKER');
return ;
}
//其他情况的牌
var colors = ['♠','♣','♥','♦'];
var numbers = ['A','2','3','4','5','6','7','8','9','10','J','Q','K'];
console.log(colors[this.color-1] + numbers[this.number-1]);
}
}
//创建一副牌
var deck=[];
for( var i=1;i<=13;i++)
{
for( var j=1;j<=4;j++)
{
deck.push(new Poker(i,j));
}
}
deck.push(new Poker(14,0));
deck.push(new Poker(15,0));
console.log( deck);
function Deck(){
this.deck=[];
for( var i=1;i<=13;i++)
{
for( var j=1;j<=4;j++)
{
this.deck.push(new Poker(i,j));
}
}
this.deck.push(new Poker(14,0));
this.deck.push(new Poker(15,0));
this.print = function(){
for(var i=0;i<deck.length;i++)
{
var p = this.deck[i];
p.print();
}
}
}
var wapper = new Deck();
wapper.print();