var something = {
wtf: null,
omg: null
};
Мои знания JavaScript все еще ужасно неоднородны с тех пор, как я в последний раз программировал с ним, но я думаю, что теперь большую часть из них я заново изучил. Кроме этого. Я не помню, чтобы когда-либо видел это раньше. Что это такое? А где я могу узнать об этом подробнее?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это синтаксис объектного литерала. «Wft» и «omg» - это имена свойств, а null и null - значения свойств.
Это эквивалентно:
var something = new Object();
something.wtf = null;
something.omg = null;
Ознакомьтесь с документацией mozilla по объектным литералам: http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals
А ну понятно. Итак, согласно ссылке, строка должна быть к "" или '' как объект к {}? Не уверен, что это лучший способ описать это, но я думаю, что теперь понял. Спасибо.
Я считаю, что это объект с двумя свойствами: WTF и OMG.
ты мог бы сказать
something.wtf = "myMessage";
alert(something.wtf);
проверить JSON.ORG
Это пример создания экземпляра встроенного объекта JavaScript.
Это литерал объекта. Фактически это эквивалентно следующему:
var something = new Object();
something["wtf"] = null;
something["omg"] = null;
Это Литерал объекта (или, иногда, ванильный объект в библиотеках с Hash-классами).
То же, что:
var o = new Object();
o.wtf = null;
o.omg = null;
Это литерал объекта с двумя свойствами. Обычно так люди создают ассоциативные массивы или хэши, потому что JS изначально не поддерживает эту структуру данных. Хотя обратите внимание, что это все еще полноценный объект, вы даже можете добавлять функции как свойства:
var myobj = {
name: 'SO',
hello: function() {
alert(this.name);
}
};
И вы можете перебирать свойства, используя цикл for:
for (i in myobj) {
// myobj[i]
// Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}
JavaScript не поддерживает ассоциативные массивы / хеши? Я бы сказал, что все является ассоциативным массивом / хешем.
Объяснение с точки зрения «Я хочу ассоциативный массив в Javascript» (именно для этого во многих случаях в конечном итоге используются объектные литералы)
От «Освоение массивов JavaScript»
Ассоциативный массив - это массив, в котором в качестве индекса используется строка вместо числа.
var normalArray = [];
normalArray[1] = 'This is an enumerated array';
alert(normalArray[1]); // outputs: This is an enumerated array
var associativeArray = [];
associativeArray['person'] = 'John Smith';
alert(associativeArray['person']); // outputs: John Smith
Javascript не имеет и не поддерживает ассоциативные массивы. Однако… Все массивы в Javascript являются объектами, а синтаксис объекта Javascript дает базовую эмуляцию ассоциативного массива. По этой причине приведенный выше пример кода действительно будет работать. Имейте в виду, что это не настоящий массив, и если вы попытаетесь его использовать, у него будут серьезные подводные камни. Элемент person в этом примере становится частью свойств и методов объекта Array, как и .length, .sort (), .splice () и все другие встроенные свойства и методы.
Вы можете просмотреть свойства объекта с помощью следующего цикла ...
var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) {
document.writeln(i+':'+associativeArray[i]+', ');
// outputs: one:First, two:Second, three:Third
};
В приведенном выше примере associativeArray.length будет равна нулю, потому что мы фактически ничего не помещали в массив, мы помещаем его в объект associativeArray. associativeArray [0] будет неопределенным.
Цикл в приведенном выше примере также подберет любые методы, свойства и прототипы, которые были добавлены в массив, а не только ваши данные. Многие проблемы, возникающие у людей с библиотекой Prototype, заключаются в том, что их ассоциативные массивы ломаются, потому что Prototype добавляет несколько полезных функций Prototype к объекту Array, а для i в циклах x подбирают эти дополнительные методы. Это проблема использования Array / objects в качестве ассоциативного массива для бедняков.
В качестве последнего примера предыдущий код будет работать независимо от того, определяете ли вы associativeArray как массив ([]), объект ({}), регулярное выражение (//), строку ("") или любой другой объект Javascript. .
Суть в том, что не пытайтесь использовать ассоциативные массивы, код для того, чем они являются - свойства объекта, а не массивы.
Этот код:
var something = {wtf:null}
Имеет такое же действие, как:
var something = {};
something.wtf=null;
Или из-за ненужного многословия:
var something=new Object();
something.wtf=null;
И полезно помнить, что последняя строка такая же, как
something["wtf"]=null;
Итак, вы можете использовать:
var myName = "wtf";
something[myName]=null;
Теперь, когда на этот вопрос дан ответ, могу ли я добавить, что у AppJet есть простой учебник по JavaScript, урок по «объектам» объясняет это очень хорошо: appjet.com/learn-to-program/lessons/objects