JavaScript: как изменить свойство переменных, хранящихся в массиве

У меня есть массив, содержащий переменные, которые используются для управления шаблоном.

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». Любое предложение, как это сделать?

Пожалуйста, попробуйте поискать, прежде чем спрашивать. Здесь сотни похожих вопросов с подробными ответами

charlietfl 04.06.2018 21:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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;
        }
}

Спасибо за хорошее объяснение.

user761100 04.06.2018 21:37

Другие вопросы по теме