JavaScript Reflect.construct() — створити об'єкт як через new
Метод Reflect.construct() створює об'єкт — так само, як оператор new, але з масивом аргументів.
Загальний опис
Оператор new не приймає масив: щоб передати йому невідому наперед кількість аргументів, доводилось вигадувати хитрощі. Reflect.construct() розв'язує це прямо.
Потрібен там, де клас і аргументи приходять динамічно — фабрики, контейнери залежностей, десеріалізація.
Третій аргумент дозволяє задати, чий прототип матиме результат — рідкісна, але потужна річ для складного успадкування.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| construct | 49+ | 42+ | 10+ | 36+ | 12+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| 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);
}
Коментарі
Коментарів ще немає — будьте першим!