@Incold

Почему this равно undefined в свойстве объекта?

Здравствуйте! Столкнулся с неожиданной проблемой, почему-то this = undefined только в свойстве объекта, в методах всё работает.
export const Api = {
    baseUrl: 'http://localhost:9000/',
    dataUrl: `${this.baseUrl}api/odata/`, // здесь ругается, в консоли пишет cannot read property baseUrl of undefined
    config: {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded, application/json'
        }
    },
    setAuthHeader(token) {
        this.config.headers['Authorization'] = `Bearer ${token}`;
    },
    get(path) {
        return axios.get(this.baseUrl+ path, this.config)
    },
    post(path, data) {
        return axios.post(this.baseUrl + path, data, this.config)
    }
};


Также пытался напрямую (вместо this написал названия объекта) и пробовал сначала объявить переменную, а потом делать export, но ничего не помогло.
Из-за чего появляется ошибка и как её исправить?
Заранее, спасибо, за любую помощь!
  • Вопрос задан
  • 337 просмотров
Решения вопроса 2
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
Потому что this есть у функций, но this за пределами функции в use_strict действительно undefined. Правильно сказали - юзайте геттеры.
Ответ написан
Комментировать
FinGanapre
@FinGanapre
Создайте геттер как вариант:
const Api = {
  baseUrl: 'http://localhost:9000/',
  get dataUrl() {
    return `${this.baseUrl}api/odata/`
  }
}

console.log(Api.dataUrl)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Belartale
@Belartale
Front-end week-junior developer
Можно использовать метод brind
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы