Prototype.js 1.6.x toJSON行为不端

时间:2012-12-12 20:28:04

标签: javascript prototypejs

在Prototype.js 1.6.x中尝试并执行

Object.toJSON([{"nodeType":1}])

它应该产生

'[{"nodeType":1}]'

作为输出字符串。然而它产生'[]'。它似乎跳过了nodeType == 1的对象。它与DOM元素有关。是否有解决方法来获得正确的输出?

jsFiddle:http://jsfiddle.net/xPVnr/

编辑:

如果obE.nodeType == 1:(

,那么看看来源似乎是jSON,如果isElement(obj)为true则返回true

1 个答案:

答案 0 :(得分:0)

使用JSON.stringify但使用以下调整来获得正确的输出(如果是数组):

var _json_stringify = JSON.stringify;
JSON.stringify = function(value) {
    var _array_tojson = Array.prototype.toJSON;
    delete Array.prototype.toJSON;
    var r=_json_stringify(value);
    Array.prototype.toJSON = _array_tojson;
    return r;
};

这会解决Array toJSON与JSON.stringify的不兼容问题,并且还会保留toJSON功能,因为其他Prototype库可能依赖于它。