Ключ переменной объекта javascript
Я создаю плагин для JQuery и должен иметь переменную как ключ в объекте.
$(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {});
эта часть вызывает ошибку:
self.settings.direction
любые идеи, в которых мой синтаксис неверен?
спасибо
Ответы
Ответ 1
AFAIK, вы не можете. Все, что находится перед двоеточием в объектной литературе, будет автоматически интерпретироваться как строка. Вам нужно будет заранее создать свой объект и использовать квадратную нотацию.
var options = {}
options[self.settings.direction] = '+=' + self.displacement + 'px';
$(selector).animate(options, "slow" , function () {});
Ответ 2
Если значение также является строкой, вы можете использовать JSON.parse:
var a = 'key';
var b = 'value';
var test = JSON.parse('{"' + a + '":"' + b + '"}"');
//test = {key: 'value'}
Ответ 3
Вы можете получить доступ к строке, определенной переменной с помощью функции toString().
так:
var obj = new Object;
obj.a = 0;
obj.b = 1;
var a = "b";
obj["a"]; // will output 0
obj[a.toString()] // will output 1
Ответ 4
Помните, что вы определяете объект между фигурными скобками. Вы не можете использовать точки в именах свойств. Предполагая, что свойство смещения установлено где-то еще раньше, это будет работать для вас:
$(selector).animate({settings: {direction: '+='+self.displacement+'px'}}, "slow" , function () {})