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"