# Потеря контекста в коде метода в ООП в JavaScript

При использовании исходного кода метода класса может потеряться контекст. Давайте посмотрим на примере. Пусть у нас есть следующий класс:

`class User { #name; constructor(name) { this.#name = name; } getName() { return this.#name; } }`

Создадим объект этого класса:

`let user = new User('john');`

Запишем код метода в переменную:

`let func = user.getName;`

В момент записи метода в переменную контекст и потерялся. Теперь `this` внутри кода метода не будет указывать на объект класса. Проверим, вызовем нашу функцию:

`console.log(func()); // ошибка`

Для решения проблемы можно привязать контекст к функции, например, через `bind`:

`func = func.bind(user); console.log(func()); // работает`
← →
↑