Как я могу использовать переменную для имени ключа?

0

У меня есть этот jQuery:

$.post(document.URL, {'blanks':word});  
$.post(document.URL, {'blanks':{ word :{'time':T}}});

И это результат, когда я регистрирую его в терминале:

{ blanks: 'plotted' }
{ blanks: { word: { time: '1386984059685' } } }

Почему переменное word не изменяется во втором выражении jQuery? Я предполагаю, что это имеет какое-то отношение к одинарным кавычкам, добавляемым к имени ключа, но я не мог понять, как работать.

Я решил проблему с

$.post(document.URL, {'blanks':{'word':word, 'time':T}});

в результате чего

{ blanks: { word: 'plotted', time: '1386984409890' } }

Но мне было любопытно, почему переменная не изменилась, когда это был ключ, и если бы был способ сделать это?

  • 1
    Ключи не могут быть переменными, см. Stackoverflow.com/questions/6071471/…
  • 0
    Хорошо, достаточно справедливо
Теги:
key
post

1 ответ

1
Лучший ответ

Если вы заранее определите свои данные, вы можете сделать это:

var someVar = 'foo';
var data = {};

data[someVar] = 'My key is "foo"';

console.log(data.foo);
console.log(data[someVar]);
console.log(data['foo']);

Все они будут регистрироваться. My key is "foo"

Когда вы создаете объект, подобный этому {prop: 'value'} Имя свойства не может быть переменной - то, что вы вводите, - это то, что вы получаете. Кавычки являются необязательными, если вы не используете символы, которые в противном случае вызывают ошибку. То же самое касается доступа к свойствам с точечной записью, например: myObj.propName.anotherPropName.

Нотация нот более гибкая, поскольку вы можете получить доступ к другим недопустимым именам свойств, а также использовать переменные для установки и доступа к свойствам.

var myObj = {
  '@##%$#%%^&%' : 'some value'
};
console.log(myObj['@##%$#%%^&%']); //logs "some value"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню