Открытый массив не доступен в классе js - PullRequest
1 голос
/ 04 ноября 2011

вот часть класса:

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!

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Вы должны использовать 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();
        }}
3 голосов
/ 04 ноября 2011

Не использовать Table использовать this.

Например:

//runtime
    this.id=0;
    this.max_buy=0;
    this.min_buy=0;
    this.player_timeout=0;

См. Скрипку: http://jsfiddle.net/maniator/a7H57/3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...