Как в свойстве класса (которое объект) получить поля переданные в конструктор
У меня есть такой класс
class Fetch{
constructor (public baseUrl: string) {}
private interceptors = {
function1() {
// Как здесь получить baseUrl
// this Не работает
}
}
}
export const instance = new Fetch('http://localhost:5000')
И я не могу получить this.baseUrl внутри функции function1, так как для неё this - это объект interceptors. Подскажите как это сделать
Ответы (1 шт):
Автор решения: MoloF
→ Ссылка
Когда вы объявляете таким образом функцию у вас скоуп ограничивается самой функцией, попробуйте указать стрелочную функцию в которой нет своего контекста и вы без проблем получите доступ к классу
class Fetch {
baseUrl = ''
constructor(baseUrl) {
this.baseUrl = baseUrl
}
interceptors = {
function1: () => {
console.log(this.baseUrl)
}
}
}
const instance = new Fetch('http://localhost:5000')
instance.interceptors.function1()
Так же вы можете вручную указать контекст созданного инстанса. При таком варианте приватные методы/переменные класса так же сохраняются.
class Fetch {
#baseUrl = ''
constructor(baseUrl) {
this.#baseUrl = baseUrl
}
interceptors = {
function1() {
console.log(this.#baseUrl)
}
}
}
const instance = new Fetch('http://localhost:5000')
instance.interceptors.function1.call(instance)