使用 JSON.stringify() 时如何忽略 .toJSON 函数?

How to ignore .toJSON function when using JSON.stringify()?

我发现如果你为一个对象定义 .toJSON() 函数,那么它被用来对一个对象进行字符串化,而不是默认的。 有没有办法忽略这个被覆盖的函数和 运行 默认的字符串化过程?

重新定义指定对象中的toJSON方法。例如:

    function kryptonite(key)
       {
       var replacement = {};
       for(var __ in this)
         {
         if(__ in alias)
           replacement[__] = this[__]
         }
    
       return replacement;
       }
    
    var foo, bar;
    var alias = {"Clark":"","phone":""};
    var contact = {
                   "Clark":"Kent",
                   "Kal El":"Superman",
                   "phone":"555-7777"
                  }
    
    contact.toJSON = kryptonite;

    foo = JSON.stringify(contact);

    contact.toJSON = undefined;
    
    bar = JSON.stringify(contact);

    console.log("foo: ", foo);
    console.log("bar: ", bar);

参考资料