JavaScript:通过从字符串中检索变量名来更新对象值

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(对象

我有一个JavaScript对象,看起来像这样。

我有一些HTML代码,看起来像这样

有没有更好的方法解决这个问题,目前我正在使用我不想使用的
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());
});