Беспорядок в JavaScript - PullRequest
0 голосов
/ 04 декабря 2010

У меня есть это определение TabList:

MyApp.TabList = function (selector) {

    var private = {
        $list: $(selector),
        tabs: []
    };

    this.add = function (tab) {
        private.tabs.push(tab);
    };
};

Когда я вызываю это, однако, и разрыв в теле this.add, private не появляется в локальной области видимости:

MyApp.tabs = new MyApp.TabList("#tabs");

$("#tab-add").click(function() {
    MyApp.tabs.add(new MyApp.Tab("title"));
});

Не удерживается ли private внутри объекта?

Если этот код работает автономно, как указано выше, возможно, я что-то упустил - я попытался сделать это как можно лучше для демонстрационных целей.

1 Ответ

2 голосов
/ 04 декабря 2010

Из-за свойства closure переменная обязательно должна быть доступна в функции add ().

Возможно, это не ответ, но private - это ключевое слово Javascript. Вы должны избегать использования его в качестве имени для переменной. Это может привести к возникновению неизвестных ошибок, и иногда отладчики не помогают. Дайте ему шанс и дайте нам знать, если это работает!

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