如何在JS中动态引用函数和变量

时间:2017-08-03 01:39:29

标签: javascript vue.js vuejs2

在这里问了几个问题并确认js没有通过引用,只有值,问题变成了,你如何做出动态决策。让我解释。现在,我正在创建一个复杂形式的许多switch语句。但是我想创建一个包含许多对象的数组,这些对象包含要满足的条件以及要执行的变量或函数。我现在实现这一目的的方法是用纯文本命名变量并在括号中执行它,如下所示:this [nameofvar] = false其中' nameofvar'是数组对象中的字符串存储。这对我来说在很多层次上都很糟糕而且很黑。

那你怎么做的?

1 个答案:

答案 0 :(得分:1)

您可以考虑用对象文字替换switch语句。看看Todd motto写的这个例子,取自他的article on this concept - 我觉得这很有用,我更喜欢这样做复杂的条件逻辑。

注意方法的调用方式: (obj[key] || obj['default'])(); 即,使用密钥定义的方法(如果存在),或者回退到默认值。因此,调用两者的第一个真值(func)();

function getDrink (type) {
  var drink;
  var drinks = {
    'coke': function () {
      drink = 'Coke';
    },
    'pepsi': function () {
      drink = 'Pepsi';
    },
    'lemonade': function () {
      drink = 'Lemonade';
    },
    'default': function () {
      drink = 'Default item';
    }
  };
    
  // invoke it
  (drinks[type] || drinks['default'])();
    
  // return a String with chosen drink
  return 'The drink I chose was ' + drink;
}

var drink = getDrink('coke');
// The drink I chose was Coke
console.log(drink);