JavaScript:通过从字符串中检索变量名来更新对象值
我有一个JavaScript对象,看起来像这样。 我有一些HTML代码,看起来像这样 有没有更好的方法解决这个问题,目前我正在使用我不想使用的JavaScript:通过从字符串中检索变量名来更新对象值,javascript,jquery,html,eval,2-way-object-databinding,Javascript,Jquery,Html,Eval,2 Way Object Databinding,我有一个JavaScript对象,看起来像这样。 我有一些HTML代码,看起来像这样 有没有更好的方法解决这个问题,目前我正在使用我不想使用的eval(),因为许多元素都会有“更改”事件,并且显示“eval”会影响代码的性能。 //输入 var myObj=[{ “假日”:{ “太阳”:“日期”, “星期一”:“日期”, “星期二”:“日期”, “星期三”:“日期”, “Thr”:“日期”, “星期五”:“日期”, “Sat”:“日期” } }] //作用 函数updateObject(对象
eval()
,因为许多元素都会有“更改”事件,并且显示“eval”会影响代码的性能。
//输入
var myObj=[{
“假日”:{
“太阳”:“日期”,
“星期一”:“日期”,
“星期二”:“日期”,
“星期三”:“日期”,
“Thr”:“日期”,
“星期五”:“日期”,
“Sat”:“日期”
}
}]
//作用
函数updateObject(对象、新值、路径){
var stack=path.replace(/\]\[/g,'.')。replace(/['''“\[\]]]/g,')。split('.');
while(stack.length>1){
object=object[stack.shift()];
}
对象[stack.shift()]=newValue;
返回对象;
}
//输出
log(updateObject(myObj,'test1',“[0]['HOLIDAY']['Sat']”);
log(updateObject(myObj,'test2',“[0]['HOLIDAY']['Tue']”);
//也可以设置如下
console.log(updateObject(myObj,'otherway','0.HOLIDAY.Wed”);
首先,您有两个名为samechang的数据属性?这应该更改吗?[data bind=onchange]
…应该是[data bind=onchange]
?这么多错误首先.on('change',
应该是.on>('change',
。第二,有没有更好的方法,如果问题是关于改进/优化,请将其发布在CodeReviews上。如果使用具有属性的单个对象而不是多个变量,则可以避免使用eval()
根据其名称更新变量。因此,masterObj[name]=…
而不是eval(name++'='+…)
Sry示例代码中的错误,这只是一个问题,很清楚我到底在问什么。
var myObj = [
{
"HOLIDAY": {
"Sun": "Date",
"Mon": "Date",
"Tue": "Date",
"Wed": "Date",
"Thr": "Date",
"Fri": "Date",
"Sat": "Date"
}
}
]
<input data-event="change"
data-variable="myObj"
data-bind="[0]['HOLIDAY']['Sun']"
type="text">
$(document).on('change', '[data-event= change]', function(){
//get-variable-name where to bind data
//Get object location inside the variable
var sVarName = $(this).data('variable');
var sObjLoca = $(this).data('bind');
eval(sVarName+sObjLoca +' = ' $(this).val());
});