首页 > 解决方案 > Javascript。如何使用原始 JSON 对象(由另一个开发人员重新定义)

问题描述

我有一个简单的 JS 代码,例如:

JSON.stringify({'a':'b'});

在我的网页上独立运行时可以正常工作。但是当我的代码放在生产环境中时,一些额外的 javascript 文件完全破坏了我的代码。这些额外的 js 文件之一具有 JSON 对象重新定义。现在我的代码正在使用我不想使用的这个版本的 JSON 对象。

如何告诉 javascript 使用内置 JSON 对象,而不是自定义对象?

一些澄清:这个 JSON 对象重新定义是在核心 javascript 生产库中完成的(我的代码插入到旧的 CMS 中)。看起来核心开发人员想为旧浏览器创建自己的 polyfill。我害怕更改他的代码。

先感谢您!

标签: javascript

解决方案


到目前为止,您最好的选择是包含重新定义的文件JSON,因为JSON规范以特定方式定义,不应该被做不同事情的东西覆盖。很多事情都可能会破坏(不仅仅是您的代码)。

如果你不能这样做,你有几个选择:

  1. 确保您的脚本是第一个,并为您的脚本创建一个私有的局部变量并分配JSON给它,然后使用该局部变量。您甚至可以制作 local JSON,如下所示:

    ;((JSON) => {
         // ...your code here...
    ))(JSON);
    
  2. 如果您的脚本必须在另一个脚本之后,则在它之前放置一个新脚本以保存原始脚本JSON

    const originalJSON = JSON;
    

    然后,再次在您的代码中使用它,可能像这样:

    ;((JSON) => {
         // ...your code here...
    ))(originalJSON);
    

推荐阅读