javascript - Prototype.js 1.6.x toJSON 行为不当

标签 javascript prototypejs

在 Prototype.js 1.6.x 中尝试一下

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

它应该产生

'[{"nodeType":1}]'

作为输出字符串。然而它会产生“[]”。它似乎会跳过 nodeType==1 的对象。这与它们是 DOM 元素有关。有没有办法获得正确的输出?

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

编辑:

查看源代码,如果 isElement(obj) 为 true,则 JSON 会返回 true,如果 obj.nodeType == 1 :(

最佳答案

使用 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;
};

这解决了数组 toJSON 与 JSON.stringify 不兼容的问题,并且还保留了 toJSON 功能,因为其他原型(prototype)库可能依赖它。

关于javascript - Prototype.js 1.6.x toJSON 行为不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848027/

相关文章:

javascript - 具有多个按钮的 Jquery 调用一个发送不同参数的函数

javascript - 仅使用客户端 js 的 Paypal 订阅

javascript - 如何在 Rails 3.1 中将 jquery 替换为原型(prototype)

javascript - 在原型(prototype)类中定义递归函数?

javascript - Prototype 可以扩展 SVG 元素吗?

javascript - 如何启用和禁用 DIV

javascript - 使用 pelican 和 liquid 标签时的内联数学渲染

javascript - 从数组 javascript 中删除旧值

jquery - 如何确定 Javascript/jQuery 中是否存在给定名称的函数?

jquery - 鼠标悬停时原型(prototype)将黑白褪色为彩色