检查Array.toJSON是否已在JavaScript中被重写

检查Array.toJSON是否已在JavaScript中被重写,javascript,arrays,Javascript,Arrays,有没有办法检查JavaScript/浏览器自己的Array.toJSON是否被任何框架或脚本覆盖?我的脚本被注入到网站中,我遇到了一个问题,在某些情况下,Prototype framework覆盖了本机Array.toJSON函数,该函数有缺陷并导致问题 编辑:默认情况下没有toJSON函数。我有点困惑,因为原型框架似乎将其原型化为一个数组,而JSON.stringify正在使用它将数组转换为JSON,这导致了一个问题…虽然这并没有回答您的确切问题,但处理原型的Array.toJSON的坏实现的

有没有办法检查JavaScript/浏览器自己的Array.toJSON是否被任何框架或脚本覆盖?我的脚本被注入到网站中,我遇到了一个问题,在某些情况下,Prototype framework覆盖了本机Array.toJSON函数,该函数有缺陷并导致问题


编辑:默认情况下没有toJSON函数。我有点困惑,因为原型框架似乎将其原型化为一个数组,而JSON.stringify正在使用它将数组转换为JSON,这导致了一个问题…

虽然这并没有回答您的确切问题,但处理原型的
Array.toJSON的坏实现的一种方法似乎是检查它是否坏了,而不是检查是否过度驾驶:

var arr = [1,2,3], corrupted;

if (typeof arr.toJSON === "function") {
  arr = arr.toJSON();
  corrupted = !(arr && arr.length == 3 && arr[2] == 3);
}
这里有更多细节


希望这有帮助。

好吧,可能是包含
[本机代码]
或类似的内容。。。此外,如果
Array.toJSON.toString()
this
Array.toJSON.toString()
this
Array.toJSON.toString()===“function toJSON(){[native code]}”
可以使用
枚举@FrançoisWahl中的?它当然不在其中。@georg不在,如果它被添加为不可枚举的,也许这会有所帮助-它似乎显示了一种保留想要的toJSON IME实现的方法。