Khi một hàm được gọi với từ khoá new, nó sẽ được dùng như một constructor

Lớp thực ra là một cú pháp

function Hero(name, level) {
    this.name = name;
    this.level = level;
}

// Adding a method to the constructor
Hero.prototype.greet = function() {
    return `${this.name} says hello.`;
}

Class:

class Hero {
    constructor(name, level) {
        this.name = name;
        this.level = level;
    }

    // Adding a method to the constructor
    greet() {
        return `${this.name} says hello.`;
    }
}

Nguồn:: function - JavaScript - What exactly does the “class” keyword actually do? How is it implemented? - Stack Overflow