English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
다음과 같이 보입니다:
//해시 타입 구현, 카드 애플리케이션 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 학습 노트 정리_간단한 구현 타입, 파이크 카드 애플리케이션의 모든 내용을 정리했습니다. 여러분의 도움이 되었기를 바랍니다. 지속적인 응원 부탁드립니다. 노래 강의에 대한 지지를 많이 해 주세요~