Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменяется родительский массив (https://javascript.ru/forum/misc/52505-izmenyaetsya-roditelskijj-massiv.html)

krutoy 22.12.2014 19:11

jsnb,
А, ну это обычные циклические ссылки, я думал, Вы что-то другое имеете в виду. Только, я не пойму, что мешает этому JSON.stringify преобразовать в строку такой объект? Почему он ругается?

Aetae 22.12.2014 19:15

krutoy, потому что форматом json это не предусмотрено. Сам попробуй преобразовать в ручную в валидный json такой объект.
В строку кода - можно, но это совсем другое, ибо json придуман в том числе и для взаимодействия с иными языками.

MallSerg 22.12.2014 20:07

Цитата:

Сообщение от krutoy
tsigel,
Ничего там у Вас не копируется. a вначале указывала на foo, а после присваивания стала указывать на fppp, только и всего.

Добавим капельку непонятной магии =)
a1 = "Привет";
b1 = "Привет";

a2 = new String ("Привет");
b2 = new String ("Привет");

alert ( " a1 === b1 " + ( a1 === b1) );
alert ( " a2 === b2 " + ( a2 === b2) );

krutoy 22.12.2014 20:19

MallSerg,
Вы сравниваете во втором случае не примитивные данные, а объекты. Не вижу никакой магии, и, тем более, связи с сабжем. Все работает как ожидается. Легко проверить
a2 = new String ("Привет");
b2 = new String ("Привет");
 
alert ( " a2 === b2 " + ( a2.valueOf() === b2.valueOf()) );
//   a2 === b2 true

MallSerg 22.12.2014 20:29

А переменные

a1 = "Привет";
b1 = "Привет";

все также указывают на одну и туже строку?
Просто цель данного примера была наглядно показать
как работает строгое сравнение для примитивных строк
и как для объектов показать что поведение разное т.е. приводит к разным результатам
это основы языка.

krutoy 22.12.2014 20:45

Цитата:

Сообщение от MallSerg
все также указывают на одну и туже строку?

да, а почему должно было что-то измениться?

krutoy 22.12.2014 20:53

Цитата:

Сообщение от MallSerg
строгое сравнение

Строгое сравнение работает очень просто. Если оба имени указывают в одно и то же место, оно возвращает истину. Больше никаких правил нет. И никакого отношения к вопросу о копировании это не имеет.

MallSerg 22.12.2014 21:19

Тогда срочно отпровляй письмо в w3c что у них ошибка с стандарте EMAScript
И попроси Илью исправить учебник http://javascript.ru/comparison-operators

krutoy 22.12.2014 21:25

MallSerg,
погляди в окно, не я там бегу стандарты менять?


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