2016-07-25 4 views
0

JSON.parse関数をオーバーライドする方法はありますか?Javascript - JSON.parse関数をオーバーライドできますか

はいの場合は、それを無効にする方向を教えてください。

+1

の可能性のある重複した[JavaScriptでサルのパッチとは何ですか?どのように実行されますか?](http://stackoverflow.com/questions/37020630/what-is-monkey-patching-in-javascript-how-is-it-executed) –

+0

試しましたか? – trincot

+0

はい私は以下を使って試してみましたが、動作しています - var JS_JSON_PARSE = JSON.parse; JSON.parse =関数(A){// 書くカスタムコード \tリターンJS_JSON_PARSE(A)。 } –

答えて

1

次は、トリックを行う必要があります。この

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

    JSON.parse = function newParse() { 

    } 
}(JSON)) 
3

はいすることができます

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

これは

JSON.prototype.parse= function(str) 
{ 
    // your custom code should be here 
} 
01あなたに参考になりますが実際の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); 
}; 
1

同様

JSON.parse = function(str) { 
    return { 'foo': 'bar' }; 
}; 

var res = JSON.parse('aaaa'); 
console.log(res); 
+0

返信いただきありがとうございます。 私のアプリケーションでは、私はJSON.parse関数を使用していましたが、現在はカスタム関数を呼び出すためにあらゆる場所でコードを変更したくありません。だから私は次のように使うつもりです。それが良い習慣であるか、それとも問題を引き起こすかを教えてください。 - 'var JS_JSON_PARSE = JSON.parse; JSON.parse =関数(A){// 書くカスタムコード \tリターンJS_JSON_PARSE(A)。 } ' –

+0

Okey、問題ありませんが、あなたが私の答えが好きなら、それを投票するのを忘れないでください。 –

関連する問題