引用具有动态名称的javascript属性

时间:2016-06-08 10:45:21

标签: javascript

我正在使用Vue.js,我想知道如何以动态的方式调用javascript属性。让我们说我将一个参数传递给这样的函数:

filter: function(items) {
    this.countriesToFilter.splice(index, 1);
},

如何以动态方式替换my.countriesToFilter调用中的国家/地区,以便我最终得到:

this.itemsToFilter.splice(index, 1);

3 个答案:

答案 0 :(得分:1)

也许这样?

filter: function(items) {
    var whatToFilter = items + 'ToFilter';
    this[whatToFilter].splice(index, 1);
},

答案 1 :(得分:1)

答案是肯定的。

var name = "itemsToFilter";
var myArray = eval("this." + name);

// use myArray

您还可以添加安全检查,这样就不会在未定义的

上调用splice
if (typeof myArray != 'undefined') {
    myArray.splice(index, 1)
}

答案 2 :(得分:1)

我可以想象这个工作的唯一方法是将字符串传递给函数,并使用方括号将该字符串插入到对象表示法中:

filter: function(keyName) {
    this[keyName + 'ToFilter']splice(index, 1);
}

如果您现有的变量items(来自问题)在函数中包含相关值,那么您还需要将其作为参数传递:

filter: function(keyName, items) {
    this[keyName + 'ToFilter']splice(index, 1);
}