Каким образом классы преобразуются в функции при создании объекта?

Каким образом происходит преобразование кода классов в функции в момент создания экземпляра класса <code>new Admin()</code> и наследования в JavaScript?
  • 3 марта 2024 г. 7:58
Ответы на вопрос 1
При создании объекта в JavaScript с помощью классов, каждый метод класса преобразуется в функцию. Когда мы создаем экземпляр класса с помощью оператора `new`, JavaScript создает новый объект и привязывает методы класса к этому объекту через свойство прототипа.

Преобразование кода классов в функции происходит следующим образом:
1. Создается пустой объект.
2. Происходит вызов конструктора класса, который инициализирует созданный объект.
3. Методы класса преобразуются в функции и присваиваются объекту через свойство `prototype`.
4. Прототип созданного объекта ссылается на прототип класса, что обеспечивает наследование методов.

Пример:
```javascript
class User {
  constructor(name) {
    this.name = name;
  }
  
  sayHello() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

class Admin extends User {
  constructor(name, role) {
    super(name);
    this.role = role;
  }
  
  getRole() {
    console.log(`My role is: ${this.role}`);
  }
}

const admin = new Admin('Alice', 'Admin');
admin.sayHello(); // Output: Hello, my name is Alice
admin.getRole(); // Output: My role is: Admin
```

При создании объекта `admin` с помощью оператора `new`, методы `sayHello` и `getRole` классов `User` и `Admin` преобразуются в функции, которые становятся методами объекта `admin`. При этом объект `admin` наследует методы класса `User` благодаря присвоению прототипу класса `Admin`.
Похожие вопросы