Тема: JS: забавный способ работы с JSON
На форуме DosTips увидел прикольный способ работы с JSON:
var html = new ActiveXObject('HTMLFile');
html.open();
html.write('<html><head><meta http-equiv="x-ua-compatible" content="IE=9" /></head></html>');
html.close();
var JSON = html.parentWindow.JSON;
var obj = {
a: {
b: 42,
c: [ 1, 2, 3 ]
}
};
var str = JSON.stringify(obj);
// {"a":{"b":42,"c":{"0":1,"1":2,"2":3,"hasOwnProperty":{},"length":3},"hasOwnProperty":{}},"hasOwnProperty":{}}
var obj2 = JSON.parse(str);
// [ActiveXObject]
Все бы хорошо, но все объекты типа ActiveXObject, что значит, что объекты (массивы в том числе) можно только перебрать в циклах for и for in. При переборе циклом for in "вылезают" "лишние" свойства, которые обычно не выводятся: length у массивов и hasOwnProperty у всех объектов. А еще у массивов отсутствуют собственные методы. То есть нельзя, например, вызвать obj2.a.c.join('-').