Подтвердить что ты не робот

Ключ переменной объекта javascript

Я создаю плагин для JQuery и должен иметь переменную как ключ в объекте.

$(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {});

эта часть вызывает ошибку:

self.settings.direction

любые идеи, в которых мой синтаксис неверен? спасибо

4b9b3361

Ответ 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 () {})