我编写了一个位于我的对象内部的测试函数,但似乎无法访问该函数。我究竟做错了什么?我的意思是我确定我编写的代码很糟糕,但具体是导致错误的原因是什么?:
function player(){
this.green=0;
function testFunction(){
this.green=99;
};
};
玩家对象在游戏对象中创建:
function game(numPlayers){
this.playerArray=[];
switch(numPlayers){
case 2:
this.player1=new player();
this.player2=new player();
this.playerArray.push(this.player1,this.player2);
break;
case 3:
this.player1=new player();
this.player2=new player();
this.player3=new player();
this.playerArray.push(this.player1,this.player2,this.player3);
break;
case 4:
this.player1=new player();
this.player2=new player();
this.player3=new player();
this.player4=new player();
this.playerArray.push(this.player1,this.player2,this.player3,this.player4);
break;
};
};
当我跑步时:
var TE=new game(2);
TE.player1.testFunction(); <---
Logger.log(TE.player1.green);
我在主题行中收到错误。
答案 0 :(得分:1)
具体是:
您尚未公开测试功能,无法从外部调用它。
这样做:
function player(){
this.green=0;
this.testFunction = function(){
this.green=99;
};
};
更好的方法是:
function Player(){ // capitalize class name
this.green=0;
};
Player.prototype.testFunction = function( num ){
this.green = num || 99;
}
通过这样做,所有你的玩家类实例都不需要有testFunction,因为那里有属性而不是父类,那么原型会有这个属性,它将通过原型继承来暴露。
答案 1 :(得分:0)
您需要将testFunction定义为播放器对象的成员:
function player(){
this.green=0;
this.testFunction = function(){
this.green=99;
};
};
注意“this.testFunction = function()...”