У меня есть массив, содержащий переменные, которые используются для управления шаблоном.
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.info(xx);
eval(xx) = false;
}
},
Я надеялся добиться этого с помощью eval (), однако он отображает «Uncaught ReferenceError: Invalid left-hand side in assignment». Любое предложение, как это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


this - это объект, и вы можете получить доступ к его свойствам двумя способами:
this.propertyName и this["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;
}
}
Спасибо за хорошее объяснение.
Пожалуйста, попробуйте поискать, прежде чем спрашивать. Здесь сотни похожих вопросов с подробными ответами