JavaScript:如何更改存储在数组中的变量的属性

时间:2018-06-04 19:29:12

标签: javascript vue.js

我有一个数组,其中包含用于控制模板的变量。

divisionsListToHide: ['showActivitiesList',
                                'showAssignActionplanDiv',
                                'showPropertiesListDiv',
                                'showAddActivityDiv',
                                'showCurrentActivity',
                                'editCurrentActivity'
                                ],

我想调用一个方法,将divisionsListToHide数组中包含的所有变量设置为false,即

this.showAssignActionplanDiv = false;
this.showPropertiesListDiv= false; 

我正在尝试创建一个方法(函数)来完成此任务:

hideDivisions: function()
        {
            for(var i = 0;i<this.divisionsListToHide.length;i++)
            {
                var xx = 'this.' + this.divisionsListToHide[i];  // e.g. this.showActivitiesList
                console.log(xx);                
                eval(xx) = false;


            }
        },

我希望通过eval()完成此任务,但是,它显示&#34; Uncaught ReferenceError:赋值中的左侧无效&#34;。有什么建议,如何做到这一点?

1 个答案:

答案 0 :(得分:1)

this是一个对象,您可以通过两种方式访问​​其属性: this.propertyNamethis["propertyName"]。这两种方式是相同的,除了第二种方式可以像变量一样使用变量:

var prop = "propertyName";
this[prop] = false;  // is equal to this["propertyName] = false, which is equal to this.propertyName = false

所以试试这个:

hideDivisions: function()
    {
        for (var i = 0; I <this.divisionsListToHide.length; i++)
        {
            this[this.divisionsListToHide[i]] = false;
        }
}