Создание объекта с помощью класса Object

Создать новый объект можно также с помощью класса Object:

let car = new Object();
console.log( car );         // {}
car._model = 'ВАЗ-2109';    // Сохранили строку
car._year = 2007;           // Сохранили число
car.getYear = function() {  // Сохранили ссылку на функцию
   return this._year;
};
// setter и getter
Object.defineProperty(car, 'model', {
   set: function(name) {
      this._model = name;
   },
   get: function() {
      return this._model;
   },
   enumerable: true,
   configurable: true
});
// Вывод значений
console.log( car._year) ;      // 2007
console.log( car.getYear() );  // 2007
// setter и getter
car.model = 'БМВ';
console.log( car.model );      // БМВ
console.log( car._model );     // БМВ
console.log( car );
// { _model: 'БМВ', _year: 2007, getYear: [Function], 
// model: [Getter/Setter] }

После создания объекта в переменной car сохраняется ссылка на него. Используя точечную нотацию, можно добавить свойство (переменную внутри объекта). В качестве значения свойства может быть указан любой тип данных: число, строка, массив или другой объект. Если в качестве значения указать ссылку на функцию, то такое свойство становится методом объекта, внутри которого доступен указатель (this) на текущий контекст.

Класс Object является базовым классом для всех других классов в JavaScript, включая пользовательские классы. Все классы наследуют метод toString(), который возвращает значение объекта в виде строки. Метод вызывается автоматически при использовании объекта в строковом контексте:

console.log( car.toString() ); // [object Object]
console.log( car + '' );       // [object Object]

Этот метод можно переопределить в пользовательском объекте:

let point = new Object();
point.x = 10;
point.y = 5;
point.toString = function() {
   return `x: ${this.x}, y: ${this.y}`;
};
console.log( point.toString() );      // x: 10, y: 5

При создании объекта с помощью фигурных скобок неявным образом вызывается конструктор класса Object. Поэтому эти две инструкции создания объектов эквиваленты:

let obj1 = { a: 1, b: 2 };
let obj2 = new Object({ a: 1, b: 2 });
console.log(obj1); // { a: 1, b: 2 }
console.log(obj2); // { a: 1, b: 2 }

Создать объект на основе другого объекта, поддерживающего итерации, позволяет статический метод fromEntries(<Итератор>) из класса Object. Каждый элемент такого объекта должен состоять из пары ключ/значение или из вложенного массива, содержащего два значения:

let arr = [ ['a', 1], ['b', 2] ];
let obj = Object.fromEntries(arr);
console.log(obj); // { a: 1, b: 2 }
let map = new Map();
map.set('c', 10);
map.set('d', 20);
obj = Object.fromEntries(map);
console.log(obj); // { c: 10, d: 20 }

Выполнить обратную процедуру позволяет метод entries():

let obj = { a: 1, b: 2 };
let arr = Object.entries(obj);
console.log(arr); // [ [ 'a', 1 ], [ 'b', 2 ] ]

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов