Как вызвать публичный метод из приватного метода класса без обращения к глобальной переменной? Пример:
class MyClass {
pub() { console.log('Привет'); }
_priv() { this.pub(); }
run() { this._priv(); }
}
new MyClass().run();
Как вызвать публичный метод из приватного метода класса без обращения к глобальной переменной? Пример:
class MyClass {
pub() { console.log('Привет'); }
_priv() { this.pub(); }
run() { this._priv(); }
}
new MyClass().run();
Мне кажется, что вызов публичного метода из приватного не представляет никаких сложностей – все коректно работает через this. В моем опыте, если метод объявлен внутри класса, то из приватного метода можно смело к нему обратиться, как показано в примере. Иногда я сталкивался с проблемами, когда this терял контекст, но в таком случае помогает корректное связывание или использование arrow-функций. Надеюсь, мой опыт будет полезен, удачи!
Я считаю, что вызов через this вообще норм работает. Но иногда контекст может теряться, если метод передается как callback. Было бы интересно узнать, сталкивались ли вы с похожими особенностями в других проектах?
Обращайтесь через this - все работает, если контекст не теряется. Когда метод определяется внутри класса, вызов публичного метода из приватного ссылается на тот же объект, как в примере. Единственное, что может создать проблемы, это передача методов в качестве callback-функций, когда контекст меняется. В таких случаях я всегда использую bind или стрелочные функции, чтобы привязать нужный контекст.
В работе мне неоднократно пришлось использовать публичные методы из приватных, и могу сказать – это работает, если следить за тем, чтобы контекст не терялся. Я иногда наталкивался на ошибку, когда метод передавался как callback и this оказывался не тем, что ожидалось. В таких случаях помогает правильное связывание методов через bind или правильное объявление функции. Так что, если структура класса четкая, проблем появляться не должно.