有没有办法检查JavaScript /浏览器自己的Array.toJSON是否被任何框架或脚本覆盖?我的脚本是在网站内部注入的,我有一个问题,在某些情况下,Prototype框架会覆盖原生的Array.toJSON函数,这个函数有问题并导致问题。
编辑:默认情况下没有toJSON功能。我有点困惑,因为看起来原型框架将它原型化为一个数组,而JSON.stringify正在使用它将数组转换为导致问题的JSON ......
答案 0 :(得分:1)
虽然这并没有回答你的确切问题,但似乎处理原型的Array.toJSON
实施失败的一种方法是检查它是否被破坏,而不是检查如果它被覆盖了:
var arr = [1,2,3], corrupted;
if (typeof arr.toJSON === "function") {
arr = arr.toJSON();
corrupted = !(arr && arr.length == 3 && arr[2] == 3);
}
此处有更多详情http://anton.kovalyov.net/p/tojson/
希望这有帮助。