javascript – PrototypeJS版本1.6.0.2重写JSON.parse和JSON.stringify并破坏socket.io功能

基本上,socket.io使用native
JSON来包含和解码数据包,我的问题是我不得不使用这个版本的原型来改变JSON行为.什么时候我应该进入服务器,如:

socket.on(‘event’,function(a,b,c),
我明白了
socket.on(‘event’,function([a,b,c],undefined,undefined).

一种解决方案是在json.js上注释这一行:

/* socket.io-client/lib/json.js
if (nativeJSON && nativeJSON.parse){
    return exports.JSON = {
      parse: nativeJSON.parse
    , stringify: nativeJSON.stringify
    };
  }
*/

但这种变化严重影响了业绩.

有没有办法恢复原生JSON功能?
是否可以创建一个隐藏的iframe来克隆JSON对象以恢复旧功能?

最佳答案 一种解决方案是杀死Prototype的toJSON()扩展方法:

if(window.Prototype) {
    delete Object.prototype.toJSON;
    delete Array.prototype.toJSON;
    delete Hash.prototype.toJSON;
    delete String.prototype.toJSON;
}

然后你应该能够毫无问题地使用浏览器的原生JSON.parse / stringify方法.

点赞