Sobes.tech
Middle+

Wat gebeurt er als je in plaats van een klasse een gewoon object met dezelfde methoden gebruikt (zonder strict mode)?

sobes.tech AI

Antwoord van AI

Если вместо класса использовать обычный объект с теми же методами (без strict mode), то основные отличия будут в поведении при создании экземпляров и в механизмах наследования.

Класс в JavaScript — это синтаксический сахар над прототипным наследованием. При использовании класса можно создавать новые объекты через new, которые автоматически наследуют методы из прототипа класса.

Если же просто создать объект с методами, то:

  • Нельзя использовать new для создания экземпляров, потому что объект не является конструктором.
  • Методы будут просто свойствами объекта, а не прототипом для новых объектов.
  • Отсутствует автоматическое связывание this при вызове методов через экземпляры, так как экземпляров нет.

Пример:

// Класс
class User {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log(`Hello, ${this.name}`);
  }
}
const u = new User('Alice');
u.greet(); // Hello, Alice

// Обычный объект
const userObj = {
  name: 'Bob',
  greet() {
    console.log(`Hello, ${this.name}`);
  }
};
userObj.greet(); // Hello, Bob

// Но нельзя сделать new userObj()
// TypeError: userObj is not a constructor

Таким образом, класс удобен для создания множества однотипных объектов с общими методами и наследованием, а объект — это просто набор свойств и функций.