ошибка «слишком большая рекурсия» при вызове JSON.stringify для большого объекта с циклическими зависимостями

У меня есть объект, содержащий циклические ссылки, и я хотел бы посмотреть на его JSON-представление. Например, если я создаю этот объект:

var myObject = {member:{}};
myObject.member.child = {};
myObject.member.child.parent = myObject.member;

и пытаюсь вызвать

JSON.stringify(myObject);

, я получаю ошибку «слишком много рекурсии», что неудивительно. «Дочерний» объект имеет ссылку на своего «родителя», а родительский объект имеет ссылку на своего дочернего объекта. Представление JSON не обязательно должно быть абсолютно точным, поскольку я использую его только для отладки, а не для отправки данных на сервер или сериализации объекта в файл или чего-то подобного. Есть ли способ указать JSON.stringify просто игнорировать определенные свойства (в данном случае свойство parent дочернего объекта), чтобы я получил:

{
    "member" : {
        "child" : {}
    }
}

Ближайшее, что я могу придумать, - это использовать методы getChild () и getParent () вместо простых членов, потому что JSON.stringify игнорирует любые свойства, являющиеся функциями, но я Я бы предпочел не делать этого, если мне не придется.

5
задан MatrixFrog 9 October 2010 в 02:07
поделиться