【发布时间】:2017-04-06 11:32:20
【问题描述】:
在尝试转向一些中级/高级 Javascript 概念时,我遇到了一个问题。在下面的代码中,对象原型和创建的对象似乎运行良好。但是当我尝试在函数'winner'中使用它们时,无论他们的分数如何,结果总是将获胜者声明为第二个参数传递。在这里,Mike 的得分 (395) 比 Peter (206) 高,应该被宣布为获胜者。此外,控制台正在记录消息“Peter 以 function () { 返回 (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);
【问题讨论】:
-
既然 score 是一个函数,你可以这样称呼它:
player1.score()
标签: javascript function object