Что выведет код Senior Объекты и массивы обновлено

toJSON и replacer

Вопрос

Что выведет код? По строке на каждый вывод.

const obj = {
  date: new Date(0),
  secret: 'пароль',
  n: 1,
  toJSON() { return { n: this.n }; },
};
console.log(JSON.stringify(obj));
console.log(JSON.stringify({ a: 1, b: 2 }, ['a']));
console.log(JSON.stringify(new Date(0)).slice(0, 5));

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: {"n":1}, {"a":1}, "1970. Почему так Метод toJSON перехватывает сериализацию - так Date превращается в ISO-строку.

Что выведет

{"n":1}
{"a":1}
"1970

Разбор

Почему так

Метод toJSON перехватывает сериализацию - так Date превращается в ISO-строку. Второй аргумент stringify (массив ключей или функция) фильтрует поля - удобный способ не отправить лишнего в логи.

Вывод

{"n":1}
{"a":1}
"1970

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.