Проблемы с доступом к объектному члену в javascript

#javascript #couchdb #evently

#javascript #couchdb #даже

Вопрос:

В _changes/data.js файле у меня есть следующая реализация:

 function(data) {
    var p;
    var tmp = $$("#profile");
    $.log(tmp);
    $.log(tmp.profile);
    if (undefined != tmp.profile) {
        return {
            cdrs : data.rows.map(function(r) {
                p = r.value;
                return p;
            }),
            message : "You are logged in as "   tmp.profile.name,
        }
    } else {
        return {
            cdrs : [ ] ,
            message : "You are not logged in",
        }
    }
};
  

Я в замешательстве, потому что сразу после перезагрузки приложения $.log(tmp.profile); отображается «undefined», хотя предыдущее $.log(tmp); ясно показывает, что объект javascript действительно имеет имя элемента profile (типа Object , с ожидаемыми данными).

Это еще более странно: когда появляется уведомление об изменении, $.log(tmp.profile); отображаются правильные данные, хотя $.log(tmp); никаких изменений не отображается.

Что происходит? Я пропускаю какие-либо правила инкапсуляции здесь?

Комментарии:

1. Это использует Prototype, верно? Я не понимаю; вы устанавливаете «tmp» для элемента DOM, нет? Почему это должно быть объектом? (О, подождите, это дело couchdb. Неважно.)

2. undefined не является зарезервированным словом и может быть установлено на что-то другое (что приводит к ошибкам). Оператор != приводит свои аргументы, вы должны почти всегда использовать === и !== вместо этого.