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";
