Sobes.tech
Back to tasks
Junior — Senior
32

Создание собственного аналога оператора new

Get help with live coding in real time with Sobes Copilot
Task condition

Напишите функцию createInstance, которая получает в качестве первого параметра конструктор (например, Book) и произвольное количество остальных аргументов. Функция должна:

  1. Сформировать новый объект, чей прототип берётся из свойства prototype переданного конструктора.
  2. Вызвать конструктор с привязанным контекстом this к только что созданному объекту, передав ему все полученные аргументы.
  3. Вернуть полученный объект, который должен быть экземпляром переданного конструктора.
function Book(name, author) {
  this.name = name;
  this.author = author;
}

function createInstance(Constructor, ...args) {
  // Ваш код здесь
}

const myBook = createInstance(Book, 'Учебник JavaScript', 'Петр Сергеев');

console.log(myBook); // { name: 'Учебник JavaScript', author: 'Петр Сергеев' }
console.log(myBook instanceof Book); // true