Объекты в JavaScript

Объе́кт в программировании — сущность в цифровом пространстве, обладающая состоянием и поведением, имеющая поля и методы.

Примитивные типы

  1. string
  2. number
  3. boolean
  4. null
  5. undefined
  6. symbol
  7. bigint

Сложные типы

  1. массивы
  2. обеъекты
За исключением прототипно-ориентированных языков вроде Lua и JavaScript, где понятие «класс» не используется вовсе, в большинстве объектно-ориентированных языков программирования (таких как Java, C++ или C#), объекты являются экземплярами некоторого заранее описанного класса.

Создание объекта

						
							let obj = {};
							let obj = {1: 'a', 2: 'b', 3: 'c'};
							console.log(obj[1]); // выведет 'a' 
						
					


						let user = new Object(); // синтаксис "конструктор объекта"
						let user = {};  // синтаксис "литерал объекта"
					

							let user = {     // объект
								name: "John",  // под ключом "name" хранится значение "John"
								age: 30        // под ключом "age" хранится значение 30
							  };
						

						user.isAdmin = true;
					

							delete user.isAdmin;
						

Вывод всего объекта

						
							let obj = {1: 'a', 2: 'b', 3: 'c'};
							console.log(obj); // выведет объект
						
					

Строковые ключи объектов

						
							let obj = {'a': 1, 'b': 2, 'c': 3};
							let obj = {a: 1, b: 2, c: 3};
						
					

Свойства объектов

						
							let obj = {a: 1, b: 2, c: 3};
							console.log(obj.a); // выведет 1
						
					

Ограничения на ключи объектов

						
							let obj = {'1key': 'a', 'key-2': 'b', key3: 'c'};

							console.log(obj['1key']);
							console.log(obj['key-2']);
							console.log(obj['key3']);
							console.log(obj.key3);
						
					

Изменение элементов объектов

						
							let obj = {a: 1, b: 2, c: 3};
							obj['a'] = '!';
							obj.b = '!';
						
					

Добавление элементов в объекты

						
							let obj = {};

							obj['a'] = 1;
							obj['b'] = 2;
							obj['c'] = 3;

							obj.e = 4;
							obj.f = 5;
							obj.g = 6;

							console.log(obj); // выведет {a: 1, b: 2, c: 3, e: 4, f: 5, g: 6}
						
					

Неупорядоченность объектов

						
							let obj = {1: 'a', 2: 'b', 3: 'c'};

							console.log(obj[1]); // выведет 'a'
							console.log(obj[2]); // выведет 'b'
							console.log(obj[3]); // выведет 'c'

							let obj = {3: 'c', 1: 'a', 2: 'b'};

							console.log(obj[1]); // выведет 'a'
							console.log(obj[2]); // выведет 'b'
							console.log(obj[3]); // выведет 'c'

							let obj = {7: 'a', 50: 'b', 23: 'c'};
						
					

Массив ключей объекта


						let obj = {a: 1, b: 2, c: 3};

						let keys = Object.keys(obj);

						console.log(keys);
					

						let obj = {a: 1, b: 2, c: 3};

						console.log(obj.length); // выведет undefined

						console.log(Object.keys(obj).length); // выведет 3
					

Ключи объектов из переменных


						let obj = {a: 1, b: 2, c: 3};
						let key = 'a';

						console.log(obj[key]); // выведет 1
					

Обращение к элементы по ключу


						console.log(obj['key']);

						console.log(obj[key]);
					

Ошибка обращения к свойству объекта


						let obj = {a: 1, b: 2, c: 3};

						let key = 'a';
						console.log(obj.key); // undefined

						console.log(obj[key]); // 1
					

Вычисляемые свойства (ключи)


						let obj = {
							a: 1,
							b: 2,
							c: 3
						};

						let key = 'a';

						let obj = {
							[key]: 1,
							b: 2,
							c: 3
						};

						let obj = {
							[key + '1']: 1,
							[key + '2']: 2,
							[key + '3']: 3
						};
					

Оператор in


						let obj = {a: 1, b: 2, c: 3};

						console.log('b' in obj); // выведет true
						console.log('x' in obj); // выведет false
					

Оператор delete


						let obj = {a: 1, b: 2, c: 3};

						delete obj.b;

						console.log(obj); // выведет {a: 1, c: 3}
					

Передача объектов по ссылке


						let obj1 = {a: 1, b: 2, c: 3};

						let obj2 = obj1;

						obj2.a = '!';

						console.log(obj1); // {a: '!', b: 2, c: 3}
					

Константы с массивами или объектами


						const obj = {a: 1, b: 2, c: 3};

						obj = 123; // ошибка
						obj = {x: 1, y: 2, z: 3}; // ошибка

						obj.a = '+'; // работает!