【问题标题】:Javascript - Can we override JSON.parse functionJavascript - 我们可以覆盖 JSON.parse 函数吗
【发布时间】:2016-07-25 06:31:28
【问题描述】:

有没有一种方法可以覆盖 JSON.parse 函数?

如果是,那么请给我提供覆盖它的方向。

【问题讨论】:

标签: javascript


【解决方案1】:

是的,你可以

Object.getOwnPropertyDescriptor(JSON, 'parse')
> {writable: true, enumerable: false, configurable: true}

像这样

(function(JSON) {
   var oldParse = JSON.parse;

   JSON.parse = function newParse() {

   } 
}(JSON))

【讨论】:

    【解决方案2】:

    以下应该可以解决问题:

    JSON.parse = function(str) {
        return { 'foo': 'bar' };
    };
    
    var res = JSON.parse('aaaa');
    console.log(res);
    

    【讨论】:

      【解决方案3】:

      这对你有帮助

      JSON.prototype.parse= function(str)
      {
          // your custom code should be here
      }
      

      或者您可以制作自定义 JSON 类来实现实际的 JSON 功能

      function CustomJSON() {};
      CustomJSON.prototype = new JSON;
      CustomJSON.prototype.__super__ = JSON;
      CustomJSON.prototype.parse= function(str) {
          console.log('called CustomJSON.parse');
      
          // calling JSON.parse();
          this.__super__.prototype.parse.call(this);
      };
      

      【讨论】:

      • 感谢您的回复。在我所有地方的应用程序中,我都使用了 JSON.parse 函数,现在我不想在每个地方都更改代码来调用自定义函数。所以我打算使用以下方式。请让我知道这是一个好的做法,否则会导致任何问题 - var JS_JSON_PARSE = JSON.parse; JSON.parse = function(a){ //Write custom code return JS_JSON_PARSE(a); }
      • 好吧,没问题,但如果你喜欢我的回答,别忘了给它投票。