2015-07-09 4 views
4

Наткнулся этого фрагментаКакой смысл jQuery.parseJSON (JSON.stringify (someData));

var someDataJSON = jQuery.parseJSON(JSON.stringify(someData)); 

В соответствии с MDN внутренний «метод преобразует значение JavaScript в строку JSON»; то внешний метод «принимает хорошо сформированную строку JSON и возвращает полученное значение JavaScript» за jQuery

Если вы начинаете со значением JS & в конечном итоге со значением JS, это бессмысленная операция?

+2

Нет смысла, если в примере, на котором вы смотрите, есть смысл. Где вы столкнулись с этим фрагментом? Это то, к чему вас пригласил Проконсул Клавдий Маркус? – Pointy

+0

Мое личное любимое решение для клонирования объектов по значению - это ['history.replaceState' структурированный клон-хак] (http://stackoverflow.com/a/10916838/1541563). –

+0

@ Наверху код не является открытым исходным кодом; но теперь, когда я знаю, что это перехват объекта, все имеет смысл ;-) – Merrick

ответ

4

Обычно это трюк, используемый для получения по значению копии объекта в javascript. (Поскольку все объекты передаются по ссылке). Вы можете найти более детальный ответ о том, как достичь этого, если вам интересно, в этом stackoverflow post

+2

Это правда, но следует отметить, что, если не знать, что задействованные объекты довольно малы, это неоптимальный способ сделать копию. – Pointy

+1

Спасибо за ссылку на это сообщение; Я действительно не знал, что копирование объектов JS может быть таким сложным ?! – Merrick

2

Если someDataJSON плоский объект JSON, таким образом, вы получите копию этого объекта. Поскольку нет прямого метода для копирования объекта javascript «по значению» [а не «по ссылке»], этот трюк может быть использован.

var copyJSONObj = JSON.parse(JSON.stringify(JSONObj)) 

Итак, есть какой-то момент после того, как все.

+0

Спасибо за четкий ответ! – Merrick

+0

Добро пожаловать Merrick :) –

Смежные вопросы