English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript 학습 기록 정리_숫자형 자료형 구현 및 패칭 카드 애플리케이션

다음과 같이 보입니다:

//해시 타입 구현, 카드 애플리케이션
function creatEnum(p){
  //생성자
  var Enumeration = function(){throw 'Enumerations cannot be instantiated';};
  //프로토타입을 재정의하고 프로토타입을 변수 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를 클래스 속성 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:25Card.prototype.toString = function(){
console.log(Coin);
/*결과: 열거 객체 Coin
 { [기능]
 values:
 [ { [숫자: 10], 이름: 'Penny', 값: 1 },
   { [숫자: 50] 이름: 'Nickel', 값: 5 },
   { [숫자: 100] 이름: 'Dime', 값: 10 },
   { [숫자: 250] 이름: 'Quarter', 값: 25 }, ]
 Penny: { [숫자: 10], 이름: 'Penny', 값: 1 },
 Nickel: { [숫자: 50] 이름: 'Nickel', 값: 5 },
 Dime: { [숫자: 100] 이름: 'Dime', 값: 10 },
 Quarter: { [숫자: 250] 이름: 'Quarter', 값: 25 },
 foreach: [기능] }
 */
console.log(Coin.Dime+2); //102 Coin.Dime 자체는 열거 객체에서 상속받아 valueof 메서드를 수정하여 값을 숫자로 변환하여 계산을 합니다
//=== 함수 creatEnum()를 사용하여一副54의扑克牌==
function Card(suit,rank){
  this.suit = suit;
  this.rank = rank;
}
Card.Suit = creatEnum( {클럽:1, 다이아몬드:2, 히트:3, 스페이스:4, 조커:5Card.prototype.toString = function(){
Card.Rank = creatEnum( {세븐:3, 네:4, 다섯:5, 십여:6, 세븐:7, 오ito:8, 나인:9, 텐:10,
            제이크:11, 여왕:12, 왕:13, A:14, 두:15, 소정자:16, 대정자:17Card.prototype.toString = function(){
return this.rank.toString()
  ', of ' +this.suit.toString();+Card.prototype.compareTo = function(that){
};
if(this.rank<that.rank) return
  if(this.rank>that.rank) return -1;
  Card.orderBySuit = function(a,b){ 1;
  표준 패션 정의
};
if(a.suit< b.suit) return
  if(a.suit> b.suit) return -1;
  Card.orderByRank = function(a,b){ 1;
  표준 패션 정의
};
if(a.rank< b.rank) return
  if(a.rank> b.rank) return -1;
  return 0; 1;
  표준 패션 정의
};
//function Deck(){
var cards = this.cards = [];
  Card.Suit.foreach(function(s){
  각 패턴에 대해 실행 //if(s!=
    Card.Rank.foreach(function(r) {5cards.push(new Card(s, r));
      if (r !=
        && r != 16 ) { 17cards.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 학습 노트 정리_간단한 구현 타입, 파이크 카드 애플리케이션의 모든 내용을 정리했습니다. 여러분의 도움이 되었기를 바랍니다. 지속적인 응원 부탁드립니다. 노래 강의에 대한 지지를 많이 해 주세요~

추천 합니다