JavaScript. Подробное руководство, 6-е издание, стр. 118
<b> Card.Suit = enumeration({Clubs: 1, Diamonds: 2, Hearts:3, Spades:4});</b><b> Card.Rank = enumeration({Two: 2, Three: 3, Four: 4, Five: 5, Six: 6,</b><b> Seven: 7, Eight: 8, Nine: 9, Ten: 10,</b><b> Jack: 11, Queen: 12, King: 13, Ace: 14});</b><b>// Определение текстового представления карты</b><b>Card.prototype.toString = function() {</b><b> return this. rank.toString() + " " + this.suit.toString();</b><b>};</b><b>// Сравнивает значения двух карт в соответствии с правилами игры в покер</b><b>Card.prototype.compareTo = function(that){</b><b> if (this.rank < that.rank) return -1;</b><b> if (this.rank > that.rank) return 1;</b><b> return 0;</b><b>};</b><b>// Функция упорядочения карт в соответствии с правилами игры в покер</b><b>Card.orderByRank = function(a,b) { return a.compareTo(b); };</b><b>// Функция упорядочения карт в соответствии с правилами игры в бридж</b><b>Card.orderBySuit = function(a,b) {</b><b> if (a.suit < b.suit) return -1;</b><b> if (a.suit > b.suit) return 1;</b><b> if (a.rank < b.rank) return -1;</b><b> if (a.rank > b.rank) return 1;</b><b> return 0;</b><b>}:</b><b>// Определение класса представления стандартной колоды карт</b><b>function Deck() {</b><b> var cards = this.cards = []; // Колода - просто массив карт</b><b> Card.Suit.foreach(function(s) { // Инициализировать массив</b><b> Card.Rank.foreach(function(r) {</b><b> cards.push(new Card(s,r));</b><b> })</b><b> });</b><b>}</b><b>// Метод перемешивания: тасует колоду карт и возвращает ее</b><b>Deck.prototype.shuffle = function() {</b><b> // Для каждого элемента массива: поменять местами</b><b> // со случайно выбранным элементом ниже</b><b> var deck = this.cards, len = deck.length;</b><b> for(var і = len-1; і > 0; і--) {</b><b> var r = Math.floor(Math.random()*(i+1)), temp; // Случайное число </b><b> temp = deck[i], deck[i] = deck[r], deck[r] = temp; // Поменять</b><b> }</b><b> return this;</b><b>}</b><b>// Метод раздачи: возвращает массив карт</b><b>Deck.prototype.deal = function(n) {</b><b> if (this.cards.length < n) throw "Карт для выдачи не хватает";</b><b> return this.cards.splice(this.cards.length-n, n);</b><b>// Создает новую колоду карт, тасует ее и раздает как в игре в бридж</b><b>var deck = (new Deck()).shuffle();</b><b>var hand = deck.deal(13).sort(Card.orderBySuit);</b>9.6.3. Стандартные методы преобразований
В разделах 3.8.3 и 6.10 описываются важные методы, используемые для преобразования типа объектов, часть из которых автоматически вызывается интерпретатором JavaScript по мере необходимости. Вам не обязательно определять эти методы в каждом своем классе, но они играют важную роль, и если вы отказываетесь от их реализации в своих классах, это должен быть осознанный выбор, а не простая оплошность.
Первым и наиболее важным является метод
<b>toString()</b><b>+</b><b>Object.prototype</b><b>toString()</b><b>toString(),</b><b>Range </b><b>Complex</b><b>toString(),</b><b>toString()</b><b>Set</b>С методом
<b>toString()</b><b>toLocaleString()</b><b>toLocaleString(),</b><b>toString().</b><b>toLocaleString(),</b><b>toString()</b><b>toLocaleString(),</b><b>toLocaleString()</b><b>Set</b>