Возможный дубликат:
этот внутренний объект
Я пытаюсь сделать литерал объекта для нескольких параметров по умолчанию для плагина jQuery, над которым я работаю:
var defaults = {
r: 5,
top: this.r,
bottom: this.r,
topleft: this.top,
topright: this.top,
bottomleft: this.bottom,
bottomright: this.bottom
};
когда я ссылаюсь на defaults.top
, это undefined
что-нибудь, что я могу сделать, чтобы заставить эту работу? Или, может быть, другой подход? Мне нужно, чтобы это был литерал объекта.
Добавлен:
Это (default
объект), то, как он ниспадает вниз, как вы можете видеть, было предназначено для того, чтобы использовать технику короткой руки. Например, если вы хотите, чтобы все углы были одинаковыми, вы должны использовать {r: 5}
, но если вы хотите, чтобы верхняя и нижняя части были разными {top: 5, bottom: 1}
, снова по отдельности {topleft: 5, topright:2, bottomleft: 3, bottomright:19 }
Прошу прощения за то, что не разъяснил это, но я очень благодарен за ваше ответы.
ОТВЕТ: Вот что я в итоге сделал
if(o.topleft == undefined || o.topright == undefined || o.bottomleft == undefined || o.bottomright == undefined){
if(o.top == undefined || o.bottom == undefined){
if(o.r == undefined){
o.topleft = 5;
o.topright = 5;
o.bottomleft = 5;
o.bottomright = 5;
}else{
o.topleft = o.r;
o.topright = o.r;
o.bottomleft = o.r;
o.bottomright = o.r;
}
}
else{
o.topleft = o.top;
o.topright = o.top;
o.bottomleft = o.bottom;
o.bottomright = o.bottom;
}
}
ужин небрежный, но эй, это сработало! Спасибо за твою помощь! Я выбрал ответ, потому что это объяснение привело меня к этому!
$(selector).myPlugin({r:10});
или$(selector).myPlugin({top:10, bottom: 5});
- person Philll_t   schedule 12.08.2012var def = {}; def.r = 5; def.top = def.r
- person elclanrs   schedule 12.08.2012