Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Обращение к элементу константы находясь внутри этой константы?

Приветствую!

1. Ранее, чтобы получить доступ к элементу константы использовал PATHS.src (пример ниже). Правильно ли так делать?

const PATHS = {
	src: 'src'
};
console.log(PATHS.src);


2. Потребовалось получить элемент константы, находясь уже в этой константе (пример ниже), обратился аналогичным способом PATHS.src - ReferenceError: PATHS is not defined . Так как правильно обратиться к элементу в этом случае?

const PATHS = {
	src: 'src',
	srcAssets: PATHS.src + '/assets',
};


3. Как правильно называть эти "элементы" в константе. Методы, свойства, элементы...?

Спасибо!
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Я не думаю, что так можно. По приоритету, сначала формируется объект, потом его ссылка передается в PATHS. Можете сделать через функциональный класс
const PATHS = new function () {
   this.src = 'src';
   this.srcAssets = this.src + '/assets';
}

Если не хотите писать this, то можете вот так
const PATHS = (function () {
   const basePath = 'src';
   return {
      src: basePath,
      srcAssets: basePath + '/assets',
   };
})();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Создаётся объект без имени. У объекта есть свойство src и потом вы добавляете свойство srcAssets.

В форме const X = {...} сначала правая часть – создаётся объект без имени с указанными свойствами; потом ссылка на этот объект записыватся в константу X. Поэтому в правой части рано использовать X – он ещё не определён.

Хорошие и правильные варианты уже предложили в ответах. Ещё можно создать X с известными и независимыми свойствами, а позже задать ему ещё свойства:
const PATHS = {
  src: 'src'
};
PATHS.srcAssets = PATHS.src + '/assets';


Это никак не противоречит «константности».
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект