Объекты в JavaScript
Объекты в JavaScript используются для хранения коллекций различных значений и сложных сущностей. В JavaScript объекты используются очень часто, это одна из основ языка.
Объявление объекта
Пустой объект:
let home = new Object(); // синтаксис "конструктор объекта"
let home = {}; // синтаксис "литерал объекта"
Объект со свойствами и методами:
let home = {
name: 'Дом', // Свойство объекта
'Жилой': true,
test: 123,
fn: function() { // Метод объекта
},
fn() { // Метод объекта в ES-6
}
}
Добавление свойства в объект
home.massa = 2500;
home['ves'] = 100;
Удаление свойства из объекта
delete home.test;
Перебор свойств объекта и их значений
for (const key in home) {
console.log(key, home[key]); // key - ключ, home[key] - значение
}
Методы объектов
Проверка на наличие свойства у объекта (2 способа):
console.log(home.hasOwnProperty('roof')); // false
console.log('massa' in obj); // true
let exists = home.hasOwnProperty('roof');
if (exists) {
console.log('такое свойство есть');
} else {
console.log('такого свойства нет');
}
Список имён свойств объекта Object.keys()
let a = Object.keys(home);
console.log(a); // ["name", "massa", "ves"]
for (let i = 0; i < a.length; i++) {
let key = a[i];
console.log(home[key]);
}
Динамическое создание свойств
Свойства у объектов могут быть созданы динамически при помощи метода Object.defineProperty(объект, имя свойства, параметры)
Параметры могут быть следующие:
- configurable - можно ли будет изменить параметры свойства
-
enumerable - будет ли свойство доступно для оператора
for
- value - значение по умолчанию
- writable - можно ли перезаписывать значение свойства
- get - функция, выполняющаяся при попытке получить значение свойства
- set - функция, выполняющаяся при попытке установить значение свойства
Пример:
Object.defineProperty(obj, 'имя свойства', {
enumerable: false, // скрыто от for in
value: '',
writable: false // нельзя изменить
});
configurable
, enumerable
и writable
по умолчанию устанавливаются как false.
Object.defineProperties
Object.defineProperties()
используется для добавления сразу нескольких свойств в объект.
Синтаксис:
Object.defineProperties(obj, {
name: {
enumerable: false,
writable: true
},
lastName: {
enumerable: true,
writable: true
}
});
*** Войдите чтобы писать комментарии.