这是课程的一部分:
function Table(seats){
//editables
var leaveTable_position=new Array('380','0','102','20');
//runtime
Table.id=0;
Table.max_buy=0;
Table.min_buy=0;
Table.player_timeout=0;
//on creation
Table.seat=new Array();
if (seats<5){seats=5;}
if (seats>5){seats=9;}
for (var i=1 ; i<=seats ; i++){
Table.seat[i]=new Seat(i);
Table.seat[i].create();
}}
你看到Table.seat公共数组? 假设我有3个席位(table.seat [0]; table.seat [2];)...
以下代码告诉我'座位未定义'!!!
table=new Table();
table.seat[2].getUser();
任何想法为什么?在js oop中不是那么好!
答案 0 :(得分:4)
您必须使用this
而不是表格。使用Table
时,您正在修改Table
函数的属性。
如果使用this
,则会在Table
“类”的当前实例上定义属性。如果您仍想要Table
加前缀,请在函数内声明var Table = this
。这样做的副作用是你不能再直接从函数内部调用Table()
。
function Table(seats){
var Table = this;
//editables
var leaveTable_position=new Array('380','0','102','20');
//runtime
Table.id=0;
Table.max_buy=0;
Table.min_buy=0;
Table.player_timeout=0;
//on creation
Table.seat=new Array();
if (seats<5){seats=5;}
if (seats>5){seats=9;}
for (var i=1 ; i<=seats ; i++){
Table.seat[i]=new Seat(i);
Table.seat[i].create();
}}
答案 1 :(得分:3)
请勿使用Table
使用this
。
例如:
//runtime
this.id=0;
this.max_buy=0;
this.min_buy=0;
this.player_timeout=0;