Когда вы используете {'margin-left':$masterWidth}
или {$propToAnimate:$masterWidth}
, вы создаете объект.Поэтому нам нужно знать, что мы делаем, когда создаем объект с использованием синтаксиса Object Initializer ({k0:v0, k1:v1}
).
Наиболее важно для вашего случаяоба делают одно и то же - создают объект с одним свойством prop
.Не имеет значения, если вы уже сказали var prop = 'different'
в другом месте, prop
просто обрабатывается как буквальное имя при использовании в {prop:20}
и не оценивается.версия вашего кода работает, использовать синтаксис a['prop']
для объектов.Так что-то вроде:
var prop = 'margin-left';
var obj = {}; // Create a new object with no propeties
obj[prop] = masterWidth; // Add a new property to obj (using the value of the variable prop as the name of the new property)
Тогда у вас будет obj['margin-left'] == masterWidth
.И вы можете использовать этот объект в функции анимации ... animate(obj);
Надеюсь, я не слишком запутался!