Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по ООП (https://javascript.ru/forum/misc/27919-vopros-po-oop.html)

uaNikita 29.04.2012 19:11

Вопрос по ООП
 
В JS все является объектами, как правильно объяснить поведение переменных a1, a2 в коде ниже. Почему в первом случае консоль выдает "undefined"?


var a1 = 1;
a1.s = 2;
console.log(a1.s)


var a2 = new Number(1)
a2.s = 2
console.log(a2.s)

B@rmaley.e><e 29.04.2012 19:17

Цитата:

Сообщение от uaNikita
Почему в первом случае консоль выдает "undefined"?

Потому что утверждение
Цитата:

Сообщение от uaNikita
В JS все является объектами

ложно. Примитивы не являются объектами.

Amphiluke 29.04.2012 19:29

B@rmaley.e><e, имхо, не совсем поэтому (хотя, разумеется, вы правы, в JavaScript есть примитивы — «не-объекты»).
В первом случае, который привел ТС, временный объект (wrapper) уничтожается сразу после установки свойства s, а при попытке чтения свойства s создается новый объект-wrapper, который не обладает этим свойством.

Впрочем, это одно и то же, так что B@rmaley.e><e прав в своем ответе.

uaNikita 29.04.2012 19:47

Спасибо за ответы. Amphiluke, можешь дать ссылку, где можно прочитать про временный объект (wrapper) подробней?

Amphiluke 29.04.2012 19:50

Могу.


Часовой пояс GMT +3, время: 19:04.