@yuriytkachenko

Создается ли объект после объявления переменной? Если да, то как он выглядит?

Говорят что в js все есть объект.

Вот например, у нас в коде еще ничего нет мы просто создали переменную x и присвоили ей значения:
<script>

var x = 3;

</script>

У меня есть вопросы
1) В этот момент когда создали переменную и присвоили ей значения, создался неявно объект?
2) Если да, то имя переменной становится именем объекта? а начение переменной (3) это значение свойства какого-то?

Тоесть:
создается неявно обьект:
x = {
number: 3
};

Правильно или нет?

3) Если да, то интересно как называется свойство так как я написал - number, или есть какое-то специальное имя в js?
4) Если переменная это ячейка памяти в компьютере то объект который создан переменной также можно назвать ячейкой памяти?
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ответы на вопрос 2
l3ftoverz
@l3ftoverz Куратор тега JavaScript
Туды сюды
В этот момент когда создали переменную и присвоили ей значения, создался неявно объект?
В JS почти всё объекты, даже все примитивные типы вроде строки, целого числа - это объекты. У них есть свой набор методов\свойств (прототипы).

Если да, то имя переменной становится именем объекта? а начение переменной (3) это значение свойства какого-то?
Нет.

Тоесть:
создается неявно обьект: x = {number: 3}; Правильно или нет?
Нет.

Если да, то интересно как называется свойство так как я написал - number, или есть какое-то специальное имя в js?
Чево? Если я верно понял твою идею: ты можешь скопировать прототип Number в строку, но... Зачем?

Если переменная это ячейка памяти в компьютере то объект который создан переменной также можно назвать ячейкой памяти?
Нет.
Ответ написан
dantothefuture
@dantothefuture
You sleep, she sleeps, they sleep, I... don't.
Вот что происходит в вашем примере поэтапно:

var x = 3;

  1. Вычисляется выражение справа – тип number, что не объект. Результат сохраняется в памяти, теперь его можно получить по ссылке;
  2. Идентификатор "x" сопоставляется с созданной выше ссылкой, регистрируется переменная (тоже не объект);
  3. Программист Вася лезет за значением переменной и получает... ну вы поняли, число.

Где объекты? А нет их тут. Объекты из примитивов в JS получаются только тогда, когда вы их создаёте явно:

var y = new Number(3);

...или обращаетесь к методу соответствующего объекта через примитив:

var z = 3;

z.toString() // то, что написали вы
(new Number(z)).toString() // то, что было исполнено

При этом в последнем случае объект будет уничтожен сборщиком мусора практически сразу же, потому что ссылок на него не остаётся.
Ответ написан
Ваш ответ на вопрос

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

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