Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

Почему без key != “” программа перестаёт работать?

#javascript




let room = {
  number: 23
};

let meetup = {
  title: "Conference",
  occupiedBy: [{
    name: "John"
  }, {
    name: "Alice"
  }],
  place: room
};

room.occupiedBy = meetup;
meetup.self = meetup;

alert(JSON.stringify(meetup, function replacer(key, value) {
  return (key != "" && value == meetup) ? undefined : value;
}));




А что делает key != "" в функции ?


  replacer(key, value)


Почему без него программа перестаёт работать?
    


Ответы

Ответ 1



В документации говорится, что функция replacer для самого объекта получает в качестве ключа пустую строку: Initially, the replacer function is called with an empty string as key representing the object being stringified. It is then called for each property on the object or array being stringified. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter поэтому, если убрать проверку на пустую строку, то для самого сериализуемого объекта meetup будет возвращено undefined и ничего не сериализуется. Кстати, вот один из способов сериализовать циклические объекты.

Комментариев нет:

Отправить комментарий