我如何保存一个字符串,然后将它用作变量名?

How do i save a string and then use is as a variable name?

我正在尝试保存一个字符串变量,然后将此变量用作另一个变量。

我正在 "name" 变量中保存一个字符串,它可以是 "weekly"、"monthly" 或 "quarterly"。

然后使用 is 作为 "this.weekly" 但使用 "name" 引用。只是为了不通过每个案例的 "swtich"。

这是我的代码:

    // Update "report" variable onclick checkbox
    checkboxSaveOnChange: function(newCheckbox){

        var name = newCheckbox.checked;


        if (newCheckbox.checked) {
            this.name.push(newCheckbox.value);  
        } else {
            var index = this.name.indexOf('newCheckbox.value'); 
            this.name.splice(index, 1); 
        }

        /*switch (name) {

            case 'weekly': 


            break;

            case 'monthly': 

            break; 

            case 'quarterly': 

            break;

        }*/


        console.log(this.weekly);
        console.log(this.monthly);
        console.log(this.quarterly);
    },

尝试使用 var name = 'this.+'newCheckbox.checked; - 不起作用...

编辑:

这仍然导致错误:

    // (newCheckbox.checked) ? this.name.push(newCheckbox.value) : this.name.indexOf('newCheckbox.value');
    if (newCheckbox.checked) {
        this[name].push(newCheckbox.value);     
    } else {
        var index = this[name].indexOf('newCheckbox.value'); 
        this[name].splice(index, 1);    
    }

尝试使用 this[name]。在 JavaScript 属性 中,访问器可以使用点符号和括号符号。您可以查看来自 Mozilla Developer Network MDN 的文档了解详细信息。

这里有一个例子来详细说明之前的答案。

var thingy = {
  weekly: false,
  monthly: false,
  quarterly: false,
  checkboxSaveOnChange: function(newCheckbox) {
    var value = newCheckbox.value,
        checked = newCheckbox.checked;
    this[value] = checked;
  }
};

document.getElementsByTagName("button")[0].onclick = function(){
  var cbs = document.querySelectorAll("input[type='checkbox']");
  for(var i=0; i<cbs.length; i++) thingy.checkboxSaveOnChange(cbs[i]);
  console.log(thingy);
};
<label><input type=checkbox value=weekly />weekly</label>
<label><input type=checkbox value=monthly />monthly</label>
<label><input type=checkbox value=quarterly />quarterly</label>
<button>do a thing</button>