DDR爱好者之家 Design By 杰米
如下所示:
//实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Instantiate Enumerations';}; //重写原型并将原型赋值给变量proto var proto = Enumeration.prototype = { constructor:Enumeration, toString:function(){return this.name;}, valueOf:function(){return this.value;}, toJSON:function(){return this.name;} }; //添加类属性,方法 Enumeration.values = []; for(var n in p){ //将对象p的每个元素都单独转存到一个单独的对象o里面,并将这些对象o存入类属性values数组中 var o = Object.create(proto); //对象o继承了Enumeration的3个实例方法和构造函数 Enumeration.prototype.valueOf = function(){return this.value*1;}; //重写原型的valueof方法 o.name = n; o.value = p[n]; Enumeration[n] = o; //添加类属性name,值为对象o Enumeration.values.push(o); } Enumeration.foreach = function (f,c) { for(var i =0;i<this.values.length;i++){ f.call(c,this.values[i]); } }; return Enumeration; } //=== var Coin = creatEnum( {Penny:1,Nickel:5,Dime:10,Quarter:25} ); console.log(Coin); /*结果:枚举对象Coin { [Function] values: [ { [Number: 10] name: 'Penny', value: 1 }, { [Number: 50] name: 'Nickel', value: 5 }, { [Number: 100] name: 'Dime', value: 10 }, { [Number: 250] name: 'Quarter', value: 25 } ], Penny: { [Number: 10] name: 'Penny', value: 1 }, Nickel: { [Number: 50] name: 'Nickel', value: 5 }, Dime: { [Number: 100] name: 'Dime', value: 10 }, Quarter: { [Number: 250] name: 'Quarter', value: 25 }, foreach: [Function] } */ console.log(Coin.Dime+2); //102 Coin.Dime本身继承自枚举对象,继承并修改了valueof方法用来将value转化为数字做计算 //===使用函数creatEnum()来表示一副54张的扑克牌== function Card(suit,rank){ this.suit = suit; this.rank = rank; } Card.Suit = creatEnum( {Clubs:1,Diamonds:2,Heates:3,Spades:4,Joker:5} ); Card.Rank = creatEnum( {Three:3,Four:4,Five:5,Six:6, Seven:7,Eight:8,Nine:9,Ten:10, Jack:11,Queen:12,King:13,Ace:14,Two:15,SmallJoker:16,BigJoker:17} ); Card.prototype.toString = function(){ return this.rank.toString() +' of '+this.suit.toString(); }; Card.prototype.compareTo = function(that){ if(this.rank<that.rank) return -1; if(this.rank>that.rank) return 1; return 0; }; Card.orderBySuit = function(a,b){ if(a.suit< b.suit) return -1; if(a.suit> b.suit) return 1; return 0; }; Card.orderByRank = function(a,b){ if(a.rank< b.rank) return -1; if(a.rank> b.rank) return 1; return 0; }; //定义一副标准扑克牌 function Deck(){ var cards = this.cards = []; Card.Suit.foreach(function(s){ //对每个花色执行 if(s!=5) { Card.Rank.foreach(function (r) { if (r != 16 && r != 17) { cards.push(new Card(s, r)); } }); }else{ Card.Rank.foreach(function (r){ if(r == 16) cards.push(new Card(s, r)); if(r == 17) cards.push(new Card(s, r)); }); } }); } //洗牌,并返回洗好的牌 Deck.prototype.shuffle = function(){ var deck = this.cards, len = deck.length; for(var i = len-1;i>0;i--){ var r = Math.floor(Math.random()*(i+1)), temp; temp = deck[i], deck[i] = deck[r], deck[r] = temp; } return this; }; //发牌,并返回牌的数组 Deck.prototype.deal = function(n){ if(this.cards.length<n) throw 'Out of cards'; return this.cards.splice(this.cards.length-n, n); }; //开始: var deck = new Deck(); var deck1 =deck.shuffle(); var n = 17; var hand1 = deck1.deal(n).sort(Card.orderByRank); for(var i = 0;i<n;i++){ var body = document.getElementById('body'); var div = document.createElement('div'); div.style.width = '50px'; div.style.height = '100px'; div.style.border = '1px solid gray'; div.style.float = 'left'; div.innerHTML = hand1[i].suit.name+' '+hand1[i].rank.name; body.appendChild(div); console.log(hand1[i].suit.name+' '+hand1[i].rank.name); }
以上就是小编为大家带来的JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用的全部内容了,希望对大家有所帮助,多多支持~
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]