gpt4 book ai didi

javascript - PrototypeJS 版本 1.6.0.2 覆盖 JSON.parse 和 JSON.stringify 并破坏 socket.io 功能

转载 作者:搜寻专家 更新时间:2023-10-31 23:21:53 24 4
gpt4 key购买 nike

基本上,socket.io 使用 nativeJSON 来编码和解码数据包,我的问题是我不得不使用这个改变 JSON 行为的原型(prototype)版本。当我应该进入服务器时:

socket.on('事件', 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;
}

那么您应该能够毫无问题地使用浏览器的 native JSON.parse/stringify 方法。

关于javascript - PrototypeJS 版本 1.6.0.2 覆盖 JSON.parse 和 JSON.stringify 并破坏 socket.io 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com