Как в свойстве класса (которое объект) получить поля переданные в конструктор

У меня есть такой класс

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)

→ Ссылка