Методы и свойства, объявленные внутри конструктора класса, хранятся в экземпляре объекта, созданного при использовании оператора 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().


Назад