Ключевое слово New в Javascript создает экземпляры свойств, которые функция устанавливает для своего объекта «this». Это поможет вам писать объектно-ориентированный код на javascript.

Принцип работы нового ключевого слова под капотом можно разбить на 4 простых шага:
1. Он создает пустой объект
2. В качестве прототипа объекта устанавливает прототип функции, на которой он вызывается
3. Он вызывает функцию с объектом, созданным на предыдущем шаге, со свойствами функции, которые вы хотите установить для этого объекта.
4. Он возвращает объект

Давайте напишем нашу собственную «новую» функцию, чтобы лучше понять эти шаги.

function Character(name, series, phrase){
  this.name = name
  this.series = series
  this.phrase = phrase
}
Character.prototype.says = function (){
    return `${this.name} from ${this.series} says "${this.phrase}"`
}
function myNew(constructorFunc, params){
    let obj = {}  // step 1
    Object.setPrototypeOf(obj, constructorFunc.prototype) // step 2
    constructorFunc.apply(obj, params) // step 3
    return obj  // step 4
}

let michael = myNew(Character,['Michael','Office','That's what she said'])
michael.says()
 
// Output :: Michael from Office says "That's what she said"
let joey = myNew(Character,['Joey','Friends','How you doin?'])
joey.says() 
// Output :: Joey from Friends says "How you doin?"

Таким образом, мы создали собственный механизм для создания экземпляров на простом Javascript.