Объекты в Javascript
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали что такое замыкания в Javascript. В данной статье я бы хотел поговорить про объекты в Javascript. По сути объект — это коллекция именованных свойств и методов. Объявить объект можно несколькими способами :
С помощью вызова класса-конструктора:
var obj = new Object(); var obj1 = Object();
С помощью объектного литерала:
var obj = {};
С помощью второго способа можно сразу задать свойства и методы у объекта. Давайте создадим объект "room" с заданной длиной и шириной, а также методом, который выводит площадь комнаты:
var room = { length : 7, width : 5, square : function() { return this.width * this.length; } }
Пары "имя свойства/метода : значение свойства/метода" разделяются запятой. После последней пары запятая не ставится (иначе возникнут проблемы в IE). Если не писать ничего внутри фигурных скобок, то будет создан пустой объект.
В отличие от массивов, где каждый элемент имеет индекс – номер, по которому можно его найти в любой момент, в объекте элементы представляют свойства (методы) с именем. При создании свойства (метода) мы должны дать ему имя. В результате созданное свойство (метод) хранится с данным именем.
Обращение к свойствам и методам
Получить значение любого свойства или метода объекта можно, обратившись к нему одним из следующих способов:
//Обращение к свойству room.length; room['length']; //Обращение к методу room.square; room['square'];
Любой метод объекта можно вызвать с помощью этого же синтаксиса и оператора "()":
room.square(); room['square']();
Создание свойств и методов
Свойства и методы у объекта Javascript создаются таким же образом, каким происходит обращение к ним. Давайте создадим у нашего объекта "room" свойство "windows", а также добавим свойство, которое выводит длину комнаты:
room.windows = 2; room.showLength = function() { alert(this.length); }
Таким нехитрым образом мы создали новое свойство и метод у объекта "room". Также мы можем методу объекта присвоить ссылку на глобальную функцию. Давайте создадим функцию, которая выводит ширину комнаты, но сделаем её глобальной:
var showW = function() { return this.width; } room.showWidth = showW; room.showWidth(); //выведет 5
Последний способ имеет преимущество при создании объектов с одним и тем же методом и позволяет экономить ресурсы – в каждом объекте хранится не код функции целиком, а только лишь ссылка на внешнюю функцию.
Удаление свойств и методов
Для удаления свойств и методов объекта вызывается оператор "delete". Давайте удалим свойство "windows" у объекта "room":
room.windows; //выведет 2 delete room.windows; room.windows; //выведет undefined
В качестве домашнего задания: создайте у нашего объекта булево свойство "hasFurniture", которое определяет есть в комнате мебель или нет.
В данной статье вы узнали про объекты в Javascript.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.