В JavaScript объекты это просто коллекции пар "ключ-значение". Таким образом, они несколько похожи на:
- словари в Python;
- хэши в Perl и Ruby;
- хэш-таблицы в C и C++;
- HashMaps в Java;
- ассоциативные массивы в PHP.
Так как в JavaScript почти все является объектами (за исключением базовых типов), все JavaScript программы интенсивно используют хэш-таблицы. И они обладают высоким быстродействием.
"Ключ" должен быть в JavaScript строкой, в то время как значение может быть любым JavaScript типом – включая и сами объекты. Это позволяет строить достаточно сложные структуры данных.
Есть два способа создать объект:
var obj = new Object();
или
var obj = {};
Эти два способа абсолютно идентичны. Второй способ называется объектный литерал.
После создания объекта ему можно присвоить свойства двумя способами:
obj.name = "Иван"
var name = obj.name;
или
obj["name"] = "Иван";
var name = obj["name"];
Эти два варианта дают один и тот же результат. Во втором случае имя свойства передается, как строка и может быть вычислено динамически во время выполнения. Также через квадратные скобки можно установить и получить свойства с именами из зарезервированных в JavaScript ключевых слов.
obj.for = "Иван"; // Синтаксическая ошибка, т.к. 'for' является зарезервированным словом
obj["for"] = "Иван"; // Нет ошибки
Объектно-литеральный синтаксис может быть использован для определения свойств объекта в момент его создания:
var obj = {
name: "Петров",
"for": "Иван",
details: {
color: "orange",
size: 12
}
}
Доступ к свойствам можно выстраивать в цепь (т.е. вызывать свойства свойств и т.д.):
obj.details.color //результат – "orange"
obj["details"]["size"] //результат – "12"