#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 не является зарезервированным словом и может быть установлено на что-то другое (что приводит к ошибкам). Оператор != приводит свои аргументы, вы должны почти всегда использовать === и !== вместо этого.