2015-06-29 9 views
2

Я узнал, что если вы определяете функцию для объекта , то она используется для строения объекта, а не по умолчанию. Есть ли способ игнорировать эту переопределенную функцию и запустить процесс по умолчанию?Как игнорировать функцию .JOON при использовании JSON.stringify()?

+0

Я полагаю, что если вы действительно хотели переопределить toJSON, но все же захотелось запустить стандартную строку, вы могли бы перебирать объекты и печатать ключи? Вы бы в значительной степени выполняли стриминг самостоятельно, хотя –

+0

Проблема: я использую стороннюю библиотеку из службы Parse.com, которая работает со своими объектами. Теперь мне нужно получить исходное представление объекта, который используется, чтобы передать его как макет объекта для моих модульных тестов. Но эта библиотека определяет функцию .toJSON(), которую я хочу игнорировать для целей тестирования. –

+0

Если это для целей отладки, можете ли вы использовать console.log (obj)? –

ответ

0

Переопределить метод 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);

Список литературы

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