Области применения JavaScript и объектная ориентация - PullRequest
0 голосов
/ 20 ноября 2010

Что не так с этим & mdash; почему переменная foo не определена из onModified() объекта Document?

function Document() {

    var foo = "dfsadf";

    this.onModified = function() {
        alert(foo);
    };

}

// Does not alert; "foo" doesn't resolve
new Document().onModified();

Я хотел бы иметь открытые методы для Document, которые ссылаются на переменные, которые как-то являются частными для Document.

1 Ответ

7 голосов
/ 20 ноября 2010

Ваша функция Document конфликтует с конструктором Document из DOM.

document instanceof Document; // true

Как и для любого хост-объекта , его поведение полностью зависит от хост-среды , и они часто могут дать вам неожиданные результаты.

Насколько я тестировал, в Firefox вы не можете заменить его значение , поэтому я бы порекомендовал вам либо переименовать вашу функцию , либо заявить об этом в другом объеме .

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