Методы и свойства, объявленные внутри конструктора класса, хранятся в экземпляре объекта, созданного при использовании оператора new. Это означает, что каждый экземпляр объекта будет иметь свою собственную копию методов и свойств, объявленных в конструкторе.

Например, если у нас есть класс Person с конструктором, который устанавливает имя и возраст объекта, а также метод sayHello(), который выводит приветствие на консоль, то метод sayHello() будет храниться в каждом экземпляре объекта Person:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
    this.sayHello = function () {
      console.log(
        `Hello, my name is ${this.name} and I'm ${this.age} years old.`,
      );
    };
  }
}
 
const person1 = new Person("Alice", 25);
const person2 = new Person("Bob", 30);
 
person1.sayHello(); // 'Hello, my name is Alice and I'm 25 years old.'
person2.sayHello(); // 'Hello, my name is Bob and I'm 30 years old.'

В этом примере метод sayHello() объявлен в конструкторе класса Person, и каждый раз, когда мы создаем новый экземпляр объекта Person с помощью оператора new, мы создаем новую копию метода sayHello() внутри объекта.

Свойства и методы, объявленные за конструктором, но внутри класса, хранятся в прототипе класса. Это означает, что они не будут храниться в каждом экземпляре объекта, а будут общими для всех экземпляров, созданных с помощью класса.

Например, если у нас есть класс Person с методом sayHello(), объявленным за конструктором, то этот метод будет храниться в прототипе класса Person:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
 
  sayHello() {
    console.log(
      `Hello, my name is ${this.name} and I'm ${this.age} years old.`,
    );
  }
}
 
const person1 = new Person("Alice", 25);
const person2 = new Person("Bob", 30);
 
person1.sayHello(); // 'Hello, my name is Alice and I'm 25 years old.'
person2.sayHello(); // 'Hello, my name is Bob and I'm 30 years old.'

В этом примере метод sayHello() объявлен за конструктором, но внутри класса. Он будет храниться в прототипе класса Person, а не в каждом экземпляре объекта Person. Таким образом, все экземпляры объекта Person будут иметь доступ к одной и той же копии метода sayHello().


Назад