Свойства — самая важная часть любого объекта JavaScript.
Свойства — это значения, ассоциированные с объектом JavaScript. По сути объект JavaScript это набор неупорядоченных свойств.
Обычно свойства можно изменять, добавлять и удалять. Но могут быть и свойства, которые можно только прочитать.
Доступ к свойствам объекта JavaScript
Получить доступ к свойству объекта можно следующим образом:
имяОбъекта.свойство // person.age
или
имяОбъекта["свойство"] // person["age"]
или
имяОбъекта[выражение] // x = "age"; person[x]
Внимание! Если для доступа к свойству используется выражение, то его результат должен давать имя свойства.
Пример №1
person.firstname + " было " + person.age + " лет.";
Пример №2
person["firstname"] + " было " + person["age"] + " лет.";
Цикл for...in
Выражение for...in в цикле проходит по свойствам объекта.
Синтаксис:
for (переменнаяinобъект) {
выполняемый код
}
Блок кода внутри цикла for...in выполняется один раз для каждого свойства объекта.
Пример прохода по всем свойствам объекта:
var person = {fname:"Иван", lname:"Петров", age:25};
for (x in person) {
txt += person[x];
}
Добавление новых свойств
Чтобы добавить новое свойство существующему объекту, нужно просто присвоить ему значение.
Предположим, что объект person уже существует. Вы можете добавить ему новое свойство:
person.nationality = "English";
Внимание! В качестве имен свойств (или методов) нельзя использовать зарезервированные слова. Здесь действуют правила образования имен в JavaScript.
Удаление свойств
Ключевое слово delete удаляет свойство из объекта:
var person = {firstName:"Иван", lastName:"Петров", age:50, eyeColor:"карие"};
delete person.age; // или delete person["age"];
Ключевое слово delete удаляет как значение свойства, так и само свойство.
После удаления свойство не может быть использовано до тех пор, пока не будет добавлено вновь.
Оператор delete используется только со свойствами объектов. Он не работает с переменными или функциями.
Не следует использовать оператор delete с предопределенными свойствами объектов JavaScript. Это может нарушить работу вашего приложения.
Атрибуты (метаданные) свойств
У всех свойств есть имя. Кроме этого, у них также есть значение.
При этом каждое свойство имеет следующие атрибуты или метаданные:
- value — содержит непосредственно данные
- enumerable — определяет доступность свойства для перечисления
- configurable — определяет доступность свойства для изменения (например, может ли свойство быть удалено, может ли быть изменен какой-либо атрибут свойства)
- writable — определяет, доступно ли данное свойство для записи (по умолчанию, true)
Эти атрибуты определяют доступность свойства (можно ли его прочитать?, его можно изменить?)
В JavaScript все атрибуты можно прочитать, но изменить можно только атрибут value (и только в том случае, если свойство изменяемо).
В ECMAScript 5 есть методы для чтения и записи всех атрибутов свойства.
Свойства прототипа
Объекты JavaScript наследуют свойства своих прототипов.
Оператор delete не удаляет наследованные свойства, но если вы удалите свойство в прототипе, то это повлияет на все объекты, которые наследуют от этого прототипа.