gpt4 book ai didi

javascript - 在 eval 的参数中转义

转载 作者:搜寻专家 更新时间:2023-11-01 04:11:36 25 4
gpt4 key购买 nike

我正在使用 eval分配动态对象的属性。

property_name_1 = property1;
property_name_2 = property2;
property_value_1 = 1;
property_value_2 = 2;
var obj = new Object;

eval("obj."+property_name_1+"='"+property_value_1+"'");
eval("obj."+property_name_2+"='"+property_value_2+"'");

然后我在 ajax 请求期间使用此对象作为发布数据。

一切正常,但众所周知 eval 不是安全函数,我应该转义 property_value_1 , property_value_2 .例如,property_value_2 = "<a href=''>Yahoo!</a>"会导致错误。

最好的方法是什么?

谢谢

最佳答案

最好的方法是根本不使用eval:

obj[property_name_1] = property_value_1;
obj[property_name_2] = property_value_2;

如果您仍然想要,则必须转义撇号和反斜杠以将值放入字符串文字中:

eval("obj." + property_name_1 + "='" + property_value_1.replace(/\\/g,'\\\\').replace(/'/g,"\\'") + "'");
eval("obj." + property_name_2 + "='" + property_value_2.replace(/\\/g,'\\\\').replace(/'/g,"\\'") + "'");

(如果用引号而不是撇号将文字字符串括起来,则必须转义引号和反斜杠。)

关于javascript - 在 eval 的参数中转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967880/

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