我也是javascript oop和游戏编程的初学者(!)。 在这里,我用方法创建了一个游戏玩家。但该方法返回undefined。为什么?,
bobsGame = {};
bobsGame.player = function(which){
this.which = which;
this.rollDice = function () {
diceVal = Math.floor(Math.random() * 6 + 1);
console.log(diceVal);
return diceVal;
}
}
var player1 = new bobsGame.player('player1');
然后在标记中......
$('#roll-dice-btn-1').click(function(){
bobsGame.player1.rollDice();
});
答案 0 :(得分:3)
您的班级中没有bobsGame.player1
,您只是为变量player1
实例化了一个新实例?
var player1 = new bobsGame.player('player1');
$('#roll-dice-btn-1').click(function(){
player1.rollDice();
});
答案 1 :(得分:2)
您的来电应该是player1.rollDice()
$('#roll-dice-btn-1').click(function(){
player1.rollDice();
});
您对bobsGame对象的player
属性与实际创建的player1
对象感到困惑。
答案 2 :(得分:2)
这可能会更好一点
bobsGame.player1 = new bobsGame.player('player1');
答案 3 :(得分:1)
你可以玩这样的结构:
bobsGame = function(opts) {
this.player = opts.player;
this.diceVal = 0;
}
bobsGame.prototype.rollDice = function(){
this.diceVal = Math.floor(Math.random() * 6 + 1);
}
在您的主文件中:
var player1 = new bobsGame({player: 'player1'});
$('#roll-dice-btn-1').click(function(){
player1.rollDice();
console.log(player1.diceVal);
});
答案 4 :(得分:1)
bobsGame.player1
。所以改变这样,它会工作正常..
bobsGame.player = function(which){
this.which = which;
this.rollDice = function(){
diceVal = Math.floor(Math.random() * 6 + 1);
console.log(diceVal);
return diceVal;
}
}
var player1 = new bobsGame.player('player1');
player1.rollDice();
答案 5 :(得分:1)
bobsGame.player1
未定义,因为player1
未在对象bobsGame
中声明。
如果您想在player1
对象中创建bobsGame
作为键,则必须使用bobsGame.player1 = new bobsGame.player('player1');
。所以你的代码看起来像:
bobsGame = {};
bobsGame.player = function(which){
this.which = which;
this.rollDice = function () {
diceVal = Math.floor(Math.random() * 6 + 1);
console.log(diceVal);
return diceVal;
}
}
var player1 = new bobsGame.player('player1');
否则,您可以使用:
$('#roll-dice-btn-1').click(function(){
player1.rollDice();
});