dollar
@dollar
Делай добро и бросай его в воду.

Можно ли при создании объекта использовать его же свойства?

Например, вместо:
o = {
  x : a + b,
  y : a + b,
}

Писать что-то вроде этого:
o = {
  x : a + b,
  y : o.x,
}
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
@FabiBoom
Можно же просто запустить в консоли и проверить, что такое делать нельзя, и, если упрощенно объяснять, то:
1) сперва у нас создается именно обьект (то что между { ... });
2) если в свойстве указанно какое-то выражение (типо a+b, или obj.property) , то оно вычисляется и результат этого выражения становиться значениям этого свойства;
3) допустим у нас есть что-то типо такого -
let o = {
  x : 2,
  y : o.x,
}

Свойство x получает значение 2 и доходим до свойства y - видим там получения свойства x объекта o, но у нас еще нет переменной с именем o, что значит мы не просто не можем получить свойство объекта, а мы не нашли сам объект и в итоге получаем ReferenceError.
4) Если у нас не было никаких ошибок и объект успешно создан и размещен в памяти, только тогда создается в нужной области видимости переменная, которой присваивается ссылка на наш объект и только тогда мы можем ссылаться на него за заданным именем.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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