2017-01-23 5 views
1

Я пытаюсь получить доступ к строке объекта и передан в функцию, но не знаю, как это сделать. раскол не допускается здесь:Доступ к значениям, переданным в функцию прототипа

var Result = { "win": 1, "loss": 2, "tie": 3 } 

function PokerHand(hand) { 
} 
PokerHand.prototype.compareWith = function(hand){ 
    // Start your coding here... 
    var myHand = this.hand.split(' '); 
    var opHand = hand.split(' '); 
    if (myHand[0] > opHand[0]) 
     return Result.win; 
    if (this.hand != hand) 
     return Result.win; 
    return Result.tie; 
} 
var player = "4S 5H 6H TS AC"; 
var opponent = "3S 5H 6H TS AC"; 
var p = new PokerHand(player); 
var o = new PokerHand(opponent); 
p.compareWith(o) 

ответ

1

Попробуйте это. Оно работает. Аргументом в функции compareWith() должен быть PokerHand, а не рука. Итак, я просто сделал player.hand в тех местах, где использовалась рука.

Еще одна вещь, конструктор PokerHand должен иметь свойство руки.

var Result = { "win": 1, "loss": 2, "tie": 3 } 
 

 
function PokerHand(hand) { 
 
    this.hand = hand; 
 
} 
 
PokerHand.prototype.compareWith = function(pokerHand){ 
 
    // Start your coding here... 
 
    var myHand = this.hand.split(' '); 
 
    var opHand = pokerHand.hand.split(' '); 
 
    if (myHand[0] > opHand[0]) 
 
     return Result.win; 
 
    if (this.hand != pokerHand.hand) 
 
     return Result.win; 
 
    return Result.tie; 
 
} 
 
var player = "4S 5H 6H TS AC"; 
 
var opponent = "3S 5H 6H TS AC"; 
 
var p = new PokerHand(player); 
 
var o = new PokerHand(opponent); 
 
console.log(p.compareWith(o))

+0

Я все еще получаю 'TypeError: Не удается прочитать свойство 'разбить' на undefined' – JohnnyBizzle

+0

Зачем вам нужна эта линия? 'this.hand = hand;' – JohnnyBizzle

+1

Потому что Object.constructor должен иметь Object.property, где он может хранить данные объекта. Поэтому, когда вы вызываете конструктор PokerHand и передаете его, он должен быть установлен на экземпляре объекта PokerHand. «this» относится к объекту в конструкторе. Таким образом. this.hand = hand в основном хранит руку на конкретном экземпляре объекта PokerHand. – Piyush

Смежные вопросы