2017-02-13 3 views
3

В соответствии с MDN Docs метод JSON.stringify() преобразует значение JavaScript в строку JSON, необязательно заменяя значения, если задана функция замены, или необязательно включает только указанные свойства если задан массив ретранслятора.JSON.stringify (значение [, replacer [, space]])

Когда функция используется как параметр замены, она принимает два параметра, ключ и значение стробируются. Объект, в котором был найден ключ, предоставляется в качестве параметра этого заменителя. Изначально он вызывается с пустой ключю, представляющей объект, который стробируется, и затем он вызывается для каждого свойства объекта или массива, которые строятся.

Вопрос в том, что является целью первого вызова этой функции? В документе не указано его поведение/воздействие.

+0

Можете ли вы привести несколько примеров, чтобы прояснить свой вопрос, пожалуйста? –

+0

Смешные вещи, как они тщательно выбрали удобное условие. Он просто сломается, если вы решите использовать что-нибудь еще, например 'key.indexOf ('PUBLIC_') === 0'. – Qwerty

ответ

0

Заканчивать MSDN on JSON.stringify:

Ключ для корневого объекта является пустая строка: "".

Так что это всего лишь корневой объект.

Это означает то же самое, как объяснение на MDN:

Первоначально он вызывается

Это означает, что получить называеться для корневого объекта, который обрабатывается первым

с пустым ключом

Это пустая строка.

, представляющий объект быть строковой

Что опять означает корневой объект.

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

+1

Спасибо за ваш комментарий, но я до сих пор не могу понять, зачем нам нужен этот пустой ключ, переданный функции replacer. Есть ли прецедент для этого? Разве не все свойства и ценности, которые нам нужны, чтобы выровнять объект? – samxy

+0

Объект, который вы передаете для строкования, не является значением какого-либо атрибута, поэтому ключа нет. Я бы предпочел структуру, которая даст вам полный путь. Например, 'key =" .foo.bar [5] .baz "; значение = 42'. С возможностью получения пути в виде массива: 'key = [" foo "," bar ", 5," baz "]'. Тогда у корневого элемента будет только пустая клавиша ('' '' или '[]'). –

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