<script>
function serialize(obj, name) {
var result = "";
function serializeInternal(o, path) {
for (p in o) {
var value = o[p];
if (typeof value != "object") {
if (typeof value == "string") {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"": p) + "] = " + "\"" + value.replace(/\"/g, "\\\"") + "\""+";";
} else {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"": p) + "] = " + value+";";
}
} else {
if (value instanceof Array) {
result += "\n" + path +"[" + (isNaN(p)?"\""+p+"\"": p) + "]"+"="+"new Array();";
serializeInternal(value, path + "[" + (isNaN(p)?"\""+p+"\"": p) + "]");
} else {
result += "\n" + path + "[" + (isNaN(p)?"\""+p+"\"": p) + "]"+"="+"new Object();";
serializeInternal(value, path +"[" + (isNaN(p)?"\""+p+"\"": p) + "]");
}
}
}
}
serializeInternal(obj, name);
return result;
}
function A() {
this.name = "A";
this.arr = new Array();
this.put = function(para) {
this.arr[this.arr.length] = para;
}
}
function B() {
this.name = "B";
this.show = "";
}
var a = new A();
var b = new B();
b.show = function() {
alert("function 1");
}
var b2 = new B();
b2.show = function() {
alert("function 2");
}
a.put(b);
a.put(b2);
//序列化
console.log(serialize(a, "a"));
//反序列化
var deserialization_lang = serialize(a, "a"); //deserialization_lang生成的语句
var a = new Object();
eval(deserialization_lang);
a.arr[0].show(); //成功的弹出function 1
</script>
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?