Так мы конструируем объект прямо в аргументе функции: $('.block').animate({ top : '+=200' }, "fast"); Все что в {} скобках это объект, мы его можем инициализировать и вне аргумента функции, а в функцию передать уже только переменную содержащую объект: var obj = { // инициализируем объект top : '+=200' } $('.block').animate(obj, "fast"); Мы не можем просто так взять и вместо top, в примере выше, подставить переменную и тем самым менять свойство, но мы можем инициализировать, например, пустой объект и создать в нем свойство top: var obj = {}; // инициализируем пустой объект obj.top : '+=200'; // создаем свойство top в объекте obj $('.block').animate(obj, "fast"); Так же объект это своего рода ассоциативный массив, тем самым можем создавать свойства и методы объекта в такой форме, передавая в качестве индекса массива имя свойства: var obj = {}; // инициализируем пустой объект obj['top'] : '+=200'; // создаем свойство top в объекте obj $('.block').animate(obj, "fast"); Из примера выше видим, что 'top' это обычное строковое значение, значит мы можем это значение записывать в другую переменную, и передавать ее в [] скобки: var obj = {}, // инициализируем пустой объект attr = 'top'; // переменная со строковым значением имени свойства для объекта obj[attr] : '+=200'; // создаем свойство top в объекте obj, при помощи доп. переменной $('.block').animate(obj, "fast"); Таким образом мы получаем возможность передать переменную в объект