Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将javascript对象编码为javascript(而不是json)?_Javascript_Json - Fatal编程技术网

是否可以将javascript对象编码为javascript(而不是json)?

是否可以将javascript对象编码为javascript(而不是json)?,javascript,json,Javascript,Json,我知道可以使用JSON.stringify将JavaScript数据对象转换为JSON。e、 g: var cat = { soundString: 'Meow!' }; 然后调用JSON.stringify(cat)获取“{”soundString:“喵!”}” 我很想知道是否有可能与此类似,除了将JavaScript对象转换为JSON,而是将其转换为可以计算回对象的JavaScript字符串 var cat = { meow: function() { co

我知道可以使用JSON.stringify将JavaScript数据对象转换为JSON。e、 g:

var cat = {
    soundString: 'Meow!'
};
然后调用JSON.stringify(cat)获取
“{”soundString:“喵!”}”

我很想知道是否有可能与此类似,除了将JavaScript对象转换为JSON,而是将其转换为可以计算回对象的JavaScript字符串

var cat = {
    meow: function() {
        console.log('Meow!');
    }
};
我想要一个能够获取cat对象并生成字符串
“{meow:function(){console.log('meow!');}}}”
,可以使用eval将其解析回来


这能做到吗

编写递归深度复制方法并检查
Array.isArray(item)

使用
.hasOwnProperty
避免原型链

把额外的报价放在你想要的地方

var str = "{"
for (var key in cat) {
    str += key + ":" + cat[key] + ","
}
str = str.substr(0, str.length-1) + "}"

归结到“我可以序列化一个函数/getter/setter吗”,对吗?如果我可以序列化/编码包含函数的对象,使其能够被计算/反序列化回对象。非本机函数可以通过使用
toString()
方法获取函数的代码来序列化。你要么发明自己的序列化格式,要么使用实际的Javascript,另一端将在其上运行
eval()
。@jfriend00但我可以从对象中的函数提取实际代码吗?如果我理解正确,它会在创建对象后立即编译为本机代码,因此恢复代码似乎很困难,除非您在对象旁边保留一份代码副本,如您通过custom toString/prototype.getCode所述。是的,实际代码仍然可用。请参见示例:。另外,请参见.props上的MDN,以了解如何正确地使用“for in-loop”!我总是忘记,只是避免它。甚至优雅地删除尾随逗号。它解决了这个问题。不过需要注意的是,需要附加“(”和post append')”才能将其计算回对象,否则它就可以工作了!这是我的最终结果:。值得注意的是,这只是一个级别的副本,并不详尽,但知道它的可行性是很酷的。事实上,我甚至不确定它是否是一个级别的副本。它似乎也适用于多层次。这真是太酷了!不,这不是深度复制,我只是懒惰。您将遇到嵌入对象和数组的问题。原语也将丢失引号