Ответ 1
var obj = {
key: value
};
// obj.key === value; // true
Он присваивает value
свойству key
of obj
. Хотя нет ограничений для того, что может быть value
(ну, это должно быть что-то назначаемое), существуют ограничения для key
: это должно быть либо имя идентификатора, строковый литерал или числовой литерал.
Более подробную информацию можно найти в разделе 11.1.5 спецификации ECMAScript.
Литеральное обозначение похоже на:
var stuffToDo = {}; // <-- empty object literal
stuffToDo.bar = function() {...};
// or stuffToDo['bar'] = ...
stuffToDo.baz = function() {...};
// or stuffToDo['baz'] = ...
Самое большое различие заключается в том, что при использовании объектного литерала вы не можете получить доступ к другим свойствам объекта во время объявления.
Это не сработает:
var obj = {
foo: value,
bar: obj.foo
};
тогда как это делает:
var obj = {};
obj.foo = value;
obj.bar = obj.foo;
Для полноты есть два других использования двоеточий в JavaScript:
-
Условный (тройной) оператор [MDN]:
var val = condition ? true-value : false-value;
-
someLabel: var x = 5;