Об'єкти ще називають колекціями пар ключ-значення. Крім того, що у об'єкта фігурні дужки, а у масиву квадратні - існує також різниця у виклику елемента:
'use strict';
let obj = {
name: 'Stepan',
age: '23',
job: 'student'
};
// Було
console.log(obj['name']); // 'Stepan'
// Стало
console.log(obj.name); // 'Stepan'
Існують наступні способи створення об'єкту:
'use strict';
let obj1 = {}; // через літерал
let obj2 = new Object(); // через конструктор
Створення через конструктор не використовується так як ніяких переваг над фігурними дужками немає, а є скоріше навіть недолік - ви не зможете відразу при створенні передати колекцію пар ключ-значення. Єдине що Ви зможете передати це лише значення:
'use strict';
let obj1 = {
name: "Oleh"
};
let obj2 = new Object("Oleh"); // буде створено new String("Oleg")
Щоб створити нове значення :
'use strict';
let obj = {};
obj.name = "Ivan"; // додати значення
console.log(obj);
Щоб видалити значення :
'use strict';
let obj = {};
obj.name = "Ivan"; // додати значення
console.log(obj);
delete obj.name; // видалити значення
console.log(obj);
По своїй суті об'єкти це посилання на місце у пам'яті де зберігаються значення за певними ключами. Тобто :
'use strict';
let obj = {
age: 23
};
/* obj - посилання на місце у пам'яті де зберігається
значення 23 за ключем "age" */
console.log(obj);
let obj2 = obj; // тепер на це значення посилаються obj та obj2
console.log(obj2);
obj = 15; // тепер на це значення посилається лише obj2
obj2 = 'test';
/* тепер на це значення ніхто не посилається і воно
буде видалено з пам'яті */
Так як при знаку "=" створюється лише посилання, а не копіюється об'єкт, то зміни в одному - будуть виникати в іншому:
'use strict';
let obj = {
age: 23
};
let obj2 = Object.assign({}, obj);
console.log(obj2);
Отож ми дізнались, що об'єкт доволі зручний тип даних, який дозволяє зберігати пари ключ-значення та навчились з ним працювати. У наступному розділі ми розглянемо що ж таке this об'єкта.