【发布时间】:2015-06-10 20:20:26
【问题描述】:
我想在 textarea 中编辑 JavaScript 并将其存储回 JavaScript 对象。例如我有这个对象:
var item1 = {
'id' : 1,
'title':'title',
'sourcecode' : "alert('hallo')"
};
如果我将内容更改为 alert("hallo") 或更复杂的示例,这会破坏我的对象吗?
我认为有一些像 https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/escape 这样的转义函数。但它被标记为已弃用。
如果不推荐使用,那么将复杂的 JavaScript 代码存储到 JavaScript 对象中的正确方法是什么?
我应该使用字符串化吗?
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
JSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串,如果替换函数是可选的替换值 指定的,或者可选地仅包括指定的属性,如果 指定了替换数组。
这不像是内置了自动逃逸。
【问题讨论】:
-
"alert('hallo')"只是一个字符串。你会像任何其他字符串一样转义它,在你将它传递给JSON.stringify,例如"alert(\"hallo\")"。值得注意的是,它实际上不需要按原样转义,因为它使用单引号 -
是的,这是一个非常简单的例子,因为我想存储更复杂的代码,混合了双引号和单引号。所以你的意思是 stringify 是正确的方法?
-
没关系。关键是,source 进行了转义。无论您在哪里创建
item1并设置sourcecode属性。是的,JSON.stringify将创建该对象的 JSON 字符串表示 -
您存储的任何 javascript 都将是 RGraham 所说的“只是”一个字符串,如果您想逐行检查它或者只是提高调试时的易读性,您可以将每一行保存在数组中。在内存和访问效率方面,虽然你可能不会比字符串做得更好。
标签: javascript json