如何恢复被重写的函数';Javascript中的原始状态
假设您有一个脚本需要在覆盖javascript的JSON的页面上运行。stringify,您如何确保您的代码使用原始的stringify而不是重写的stringify?如果您正在创建库,则要求如何恢复被重写的函数';Javascript中的原始状态,javascript,Javascript,假设您有一个脚本需要在覆盖javascript的JSON的页面上运行。stringify,您如何确保您的代码使用原始的stringify而不是重写的stringify?如果您正在创建库,则要求JSON.stringify应符合标准行为 对代码提出严格要求并没有错,事实上这是一个好主意。您只需要确定要记录需求 显然,如果原始文件被永久覆盖,则无法使用它。将负担放在最终用户身上是一个更好的解决方案 如果这不是针对库,而是针对个人项目,那么您应该简单地拒绝加载任何第三方代码,这些代码做了一些愚蠢的事情
JSON.stringify
应符合标准行为
对代码提出严格要求并没有错,事实上这是一个好主意。您只需要确定要记录需求
显然,如果原始文件被永久覆盖,则无法使用它。将负担放在最终用户身上是一个更好的解决方案
如果这不是针对库,而是针对个人项目,那么您应该简单地拒绝加载任何第三方代码,这些代码做了一些愚蠢的事情,比如用不一致的方法替换一致的方法。在覆盖之前备份
JSON。stringify
。如果您无法备份,请使用。虽然我会选择其他答案之一,但以下是针对以下情况的解决方案:
contentWindow
属性;然后,它应该包含原始(或“新的未触及”)JSON对象,从而包含原始的JSON.stringify函数在其他代码有机会修改之前运行您的代码?我严重怀疑你能找到在变量(或函数,如本例中)被覆盖之前的内容。。。似乎您可以创建iframe,并访问其(全新的、未修改的)内容。另外,您的问题与此问题重复,因此应该关闭。我正在构建一个带有bookmarklet的应用程序,并注意到一个网站覆盖了stringify并导致错误。因为它是一个bookmarklet,在页面不是选项之前运行它,这是一个优雅的解决方案(“首先不要有这个问题”)。丑陋的解决方案就在这里:不幸的是,优雅的解决方案在Javascript中并不总是一个选项。它非常有用。非常感谢。