检查是否已在JavaScript中覆盖了Array.toJSON

时间:2014-08-13 11:46:08

标签: javascript arrays

有没有办法检查JavaScript /浏览器自己的Array.toJSON是否被任何框架或脚本覆盖?我的脚本是在网站内部注入的,我有一个问题,在某些情况下,Prototype框架会覆盖原生的Array.toJSON函数,这个函数有问题并导致问题。

编辑:默认情况下没有toJSON功能。我有点困惑,因为看起来原型框架将它原型化为一个数组,而JSON.stringify正在使用它将数组转换为导致问题的JSON ......

1 个答案:

答案 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/

希望这有帮助。