亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript學(xué)習(xí)筆記整理_簡(jiǎn)單實(shí)現(xiàn)枚舉類型,撲克牌應(yīng)用

 更新時(shí)間:2016年09月19日 08:31:56   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇JavaScript學(xué)習(xí)筆記整理_簡(jiǎn)單實(shí)現(xiàn)枚舉類型,撲克牌應(yīng)用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

如下所示:

//實(shí)現(xiàn)枚舉類型,撲克牌應(yīng)用
function creatEnum(p){
  //構(gòu)造函數(shù)
  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){ //將對(duì)象p的每個(gè)元素都單獨(dú)轉(zhuǎn)存到一個(gè)單獨(dú)的對(duì)象o里面,并將這些對(duì)象o存入類屬性values數(shù)組中
    var o = Object.create(proto); //對(duì)象o繼承了Enumeration的3個(gè)實(shí)例方法和構(gòu)造函數(shù)
    Enumeration.prototype.valueOf = function(){return this.value*1;}; //重寫原型的valueof方法
    o.name = n;
    o.value = p[n];
    Enumeration[n] = o; //添加類屬性name,值為對(duì)象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);
/*結(jié)果:枚舉對(duì)象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本身繼承自枚舉對(duì)象,繼承并修改了valueof方法用來(lái)將value轉(zhuǎn)化為數(shù)字做計(jì)算
 
//===使用函數(shù)creatEnum()來(lái)表示一副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;
};
//定義一副標(biāo)準(zhǔn)撲克牌
function Deck(){
  var cards = this.cards = [];
  Card.Suit.foreach(function(s){ //對(duì)每個(gè)花色執(zhí)行
    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;
};
//發(fā)牌,并返回牌的數(shù)組
Deck.prototype.deal = function(n){
  if(this.cards.length<n) throw 'Out of cards';
  return this.cards.splice(this.cards.length-n, n);
};
//開(kāi)始:
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);
}

以上就是小編為大家?guī)?lái)的JavaScript學(xué)習(xí)筆記整理_簡(jiǎn)單實(shí)現(xiàn)枚舉類型,撲克牌應(yīng)用的全部?jī)?nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~

相關(guān)文章

  • js異常捕獲方法介紹

    js異常捕獲方法介紹

    本篇文章小編為大家介紹一下關(guān)于js的異常捕獲,有需要的朋友可以參考一下
    2013-04-04
  • 深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)

    深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)

    下面小編就為大家?guī)?lái)一篇深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • Javascript學(xué)習(xí)筆記4 Eval函數(shù)

    Javascript學(xué)習(xí)筆記4 Eval函數(shù)

    在初學(xué)JS的時(shí)候就知道這個(gè)函數(shù),卻一直沒(méi)有了解過(guò)他的用途,也一直都是睜一只眼閉一只眼,這次來(lái)深入地了解一下這個(gè)函數(shù)的作用。
    2010-01-01
  • JavaScript學(xué)習(xí)筆記(一) js基本語(yǔ)法

    JavaScript學(xué)習(xí)筆記(一) js基本語(yǔ)法

    JavaScript學(xué)習(xí)筆記(一) js基本語(yǔ)法,想要學(xué)習(xí)js的朋友可以參考下。
    2011-10-10
  • 簡(jiǎn)單總結(jié)JavaScript中的String字符串類型

    簡(jiǎn)單總結(jié)JavaScript中的String字符串類型

    就像其他語(yǔ)言那樣,js中的字符串類型可以表示一串字符,由雙引號(hào)包住,這里簡(jiǎn)單總結(jié)JavaScript中的String字符串類型的一些基礎(chǔ)知識(shí)
    2016-05-05
  • JavaScript數(shù)據(jù)類型之基本類型和引用類型的值

    JavaScript數(shù)據(jù)類型之基本類型和引用類型的值

    這篇文章主要介紹了JavaScript數(shù)據(jù)類型之基本類型和引用類型的值,本文講解了動(dòng)態(tài)的屬性、復(fù)制變量值、傳遞參數(shù)、檢測(cè)類型等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 詳解原生JS動(dòng)態(tài)添加和刪除類

    詳解原生JS動(dòng)態(tài)添加和刪除類

    這篇文章主要介紹了原生JS動(dòng)態(tài)添加和刪除類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 實(shí)例講解JavaScript預(yù)編譯流程

    實(shí)例講解JavaScript預(yù)編譯流程

    在本篇文章里我們給大家分享的是關(guān)于JavaScript預(yù)編譯流程的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-01-01
  • Javascript學(xué)習(xí)筆記之 函數(shù)篇(三) : 閉包和引用

    Javascript學(xué)習(xí)筆記之 函數(shù)篇(三) : 閉包和引用

    本系列好久沒(méi)更新了,今天重新拿過(guò)來(lái),繼續(xù)前面未完成的事項(xiàng),本文我們就來(lái)談?wù)凧avascript 中一個(gè)最重要的特性--閉包的使用引用。
    2014-11-11
  • javascript閉包入門示例

    javascript閉包入門示例

    這篇文章主要介紹了多個(gè)javascript閉包入門示例,理解了這幾個(gè)例子,對(duì)于閉包,應(yīng)該可以算是入門了,需要的朋友可以參考下
    2014-04-04

最新評(píng)論