JavaScript: Объекты
Объект – это неупорядоченная коллекция свойств. Свойство – это часть объекта имитирующая переменную. Свойство состоит из имени и значения.
В JavaScript есть три категории объектов:
- Объекты базового типа – это объекты, определённые в спецификации ECMAScript. Например, объекты типа
Array
,Function
,Date
илиRegExp
являются объектами базового типа. - Объекты среды выполнения – это объекты, определённые в среде выполнения (такой как браузер). Например, объекты типа
HTMLElement
, являются объектами среды выполнения. - Пользовательские объекты – это любой объект, созданный в результате выполнения программного кода JavaScript.
Создание объекта
Объект можно создать с помощью литерала объекта или оператора new
с конструктором.
Литерал объекта – это заключённый в фигурные скобки список из нуля или более свойств (пар имя: значение), разделённых запятыми. Именем свойства может быть любой допустимый идентификатор, строковой литерал (допускается использовать пустую строку) или число. Числовые имена свойств автоматически преобразуются в строки. Значением свойства может быть значение любого типа или выражение (значением свойства в этом случае станет результат вычисления выражения):
// Создание пустого объекта var o = {}; // Создание объекта с тремя свойствами var user = { name: "Homer", "age": 45, 1: true };
Создание объекта с помощью оператора new:
var o = new Object();
Операции с объектом
Основные операции производимые с объектами – это добавление новых свойств, изменение уже существующих свойств, удаление свойств и обращение к свойствам.
Добавить новое свойство в объект можно присвоив свойству значение. Чтобы присвоить свойству значение, к нему нужно получить доступ. Для доступа к свойству используется один из операторов доступа: . (точка) или [] (квадратные скобки):
var o = {}; o.x = 5; // Добавили новое свойство o["y"] = 10; // Добавили новое свойство
Обращение к свойству и изменение значения осуществляется точно так же (с помощью операторов доступа):
var o = {x:5}; alert(o.x); // Обращение к свойству alert(o["x"]); // Обращение к свойству o.x = 10; // Изменяем значение
Удаление свойства осуществляется с помощью оператора delete:
var o = {x:5}; alert("x" in o); // true delete o.x; alert("x" in o); // false
Для перебора свойств объекта используется цикл for-in:
var obj = {x: 5, y: 10, str: "Hi!"}; for (var prop in obj) { alert(prop); }
Методы объекта
Свойство, значением которого является функция, называется методом. Вызов метода осуществляется точно также, как и вызов обычной функции – с помощью оператора () (оператор вызова):
var o = { sayHi: function() { alert("Hello!"); } }; o.sayHi(); // "Hello!"
Для доступа к свойствам объекта внутри метода используется ключевое слово this
. Оно содержит ссылку на объект, с помощью которого был вызван метод:
var o = { name: "Homer", sayName: function() { alert(this.name); } }; o.sayName(); // "Homer"
Вместо ключевого слова this
можно использовать непосредственно имя объекта, но это не очень удобно, так как, если изменится имя объекта, в методах придётся также изменять имя:
var o = { name: "Homer", sayName: function() { alert(o.name); } }; o.sayName(); // "Homer"