JavaScript Reflect.construct() — створити об'єкт як через new


Метод Reflect.construct() створює об'єкт — так само, як оператор new, але з масивом аргументів.

автор: NagarD

Загальний опис

Оператор new не приймає масив: щоб передати йому невідому наперед кількість аргументів, доводилось вигадувати хитрощі. Reflect.construct() розв'язує це прямо.

Потрібен там, де клас і аргументи приходять динамічно — фабрики, контейнери залежностей, десеріалізація.

Третій аргумент дозволяє задати, чий прототип матиме результат — рідкісна, але потужна річ для складного успадкування.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
construct 49+ 42+ 10+ 36+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
construct 49+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Фабрика, що створює будь-який клас із масиву аргументів.

class User {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}

// new не приймає масив — а тут можна
const args = ['Іван', 30];
const user = Reflect.construct(User, args);

console.log(user.name); // 'Іван'

// фабрика для контейнера залежностей
function make(Class, deps) {
    return Reflect.construct(Class, deps);
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід