42. Объектные литералы
Использование объектного литерала
Создание объекта с помощью объектного литерала, достаточно очевидно. Объектный литерал представляет из себя, заключенные в фигурные скобки, пары свойств и их значений, разделенные запятыми. В свою очередь каждое свойство отделено от его значения с помощью двоеточия. Имена свойств могут быть идентификаторами, строками или числами, а значения могут быть строками, числами, функциями или другими объектами. Имена свойств преобразуются в строки, это значит что строка "25"
и число 25
, указывают на одно и тоже свойство, и при использовании в одном объекте будут переназначать друг друга.
Пример:
{ property: value, property: value }
Создание объектов
Для демонстрации этого метода, давайте создадим простой объект с тремя свойствами, два из них будут хранить числа, тогда как третье будет анонимной функцией (функцией без имени):
var AnimationManager = { framesPerSecond: 30, totalLength: 15, startAnimation: function() { /* code */ } }
Стоит обратить внимание на то, что объектный литерал, это всего лишь сокращенный способ создания объектов с помощью встроенного типа Object
, а вышеприведенный пример можно переписать так:
var AnimationManager = new Object(); AnimationManager.framesPerSecond = 30; AnimationManager.totalLength = 15; AnimationManager.startAnimation = function () { /* code */ };
Доступ к свойствам объекта
Мы создали объект AnimationManager
и теперь можем получить доступ к его свойствам с помощью точки или квадратных скобок, следующие две строки кода дают один и тот же результат:
alert(AnimationManager.framesPerSecond); // object.property alert(AnimationManager['framesPerSecond']); // object['property']
Чаще для доступа к свойствам мы будем использовать точку, но возможность доступа к объекту как к хеш таблице может быть полезна, если нужен гибкий доступ к нескольким похожим свойствам. К примеру, нам может понадобиться функция, устанавливающая свойства framesPerSecond
и totalLength
, используя только точку, мы будем вынуждены обратиться к такому коду:
function changeValue(property, value) { if (property == "framesPerSecond") { AnimationManager.framesPerSecond = value; } else { AnimationManager.totalLength = value; } }
А, зная о том, что к свойствам можно обращаться с помощью квадратных скобок, мы получим более компактный код:
function changeValue(property, value) { AnimationManager[property] = value; }
Добавляем свойства или методы
В процессе работы с объектом мы можем, создать новые свойства или методы в любой момент. Создать новое свойство и присвоить ему значение, так же просто, как и присвоить значение существующему:
AnimationManager.stopAnimation = function() { } AnimationManager.defaultTween = "sinoidal";