У меня есть случай, когда я хочу сделать это:буквальные объект и JQuery селекторы DRY
var els = {
div: $('div'),
p: els.div.find('p'),
span: els.p.find('span')
};
Но это происходит:
console.log(els.div); // Works
console.log(els.p); // undefined
Так что я сейчас делаю это:
var els = (function(){
var div = $('div'),
p = div.find('p'),
span = p.find('span');
return {
div: div,
p: p,
span: span
}
}());
console.log(els.p); // Works now
Есть ли способ сделать это DRYer? Похоже на кучу кода, чтобы просто сделать это.
Почему эта работа и мой код нет? Это просто объект, какая разница, что заставляет его работать таким образом? – elclanrs
@elclanrs: вы должны получить сообщение об ошибке (http://jsfiddle.net/ambiguous/uFxeh/), так как 'els.div' не определен, пока вы не нажмете на закрытие'} '; 'els' только частично сформировался, пока вы все еще определяете его (так что это' undefined' и не имеет никаких свойств: http://jsfiddle.net/ambiguous/VDuTw/), и вы еще не закончили его определение пока вы не нажмете на закрытие. –