2017-04-06 19 views
0

嘗試轉向某些中級/高級Javascript概念時,遇到了問題。在下面的代碼中,對象原型和創建的對象似乎運行良好。但是,當我嘗試在函數'優勝者'中使用它們時,無論其得分如何,結果總是宣告勝利者爲第二個參數。在這裏,邁克的得分(395)高於彼得(206),應該被宣佈爲獲勝者。此外,控制檯正在記錄消息「彼得贏得功能分數(){ return(this.age * 5)+ this.height; }」。對象,原型繼承和失敗函數

任何幫助瞭解我做錯了什麼將不勝感激。

var player = { 
 
    name: 'Default', 
 
    age: 'Default', 
 
    height: 'Default', 
 
    score: function() { 
 
     return (this.age * 5) + this.height; 
 
    } 
 
} 
 
    
 
var Mike = Object.create(player); 
 
Mike.name = 'Mike'; 
 
Mike.age = 67; 
 
Mike.height = 60; 
 

 

 
var Peter = Object.create(player); 
 
Peter.name = 'Peter'; 
 
Peter.age = 30; 
 
Peter.height = 56; 
 

 

 
var winner = function(player1, player2) { 
 
    var player1score = player1.score; 
 
    var player2score = player2.score; 
 
    
 
    if(player1score > player2score) { 
 
     console.log(player1.name + ' wins with a score of ' + player1.score); 
 
    } else { 
 
     console.log(player2.name + ' wins with a score of ' + player2.score); 
 
    } 
 
} 
 

 
winner(Mike, Peter); 
 
winner(Peter, Mike);

+1

由於得分是一個函數,所以您需要像這樣調用它:'player1.score()' – hola

回答

1

更換

var player1score = player1.score; 
var player2score = player2.score; 

var player1score = player1.score(); 
var player2score = player2.score(); 

你要調用的函數,如果你只寫player1.score你會得到函數體。

+0

愚蠢的錯誤。我知道它會是這樣的小東西。謝謝! –