Передать в функцию класс аргументом? JS
Возможно ли передать в функцию класс или переменную (название класса) так чтобы подставить в этот код? (CLASSNAME)
const reRenderEl = (targetId, 'CLASSNAME') => {
const mainContent = document.getElementById(targetId);
mainContent.innerHTML = '';
const allUsersItem = new 'CLASSNAME'(targetId);
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Можно передавайте функцию. В параметре. Функцию можно вызвать с оператором new. А параметры в js резиновые можете передавать.
const reRenderEl = (targetId, func) => {
const allUsersItem = new func(targetId);
}
function testFunc(arg) {
console.log(arg);
}
reRender(12345, testFunc);
Автор решения: MaxLevs
→ Ссылка
Ты можешь передавать классы, как аргументы. Значит, можешь либо передавать классы в функцию "как есть". Или создать коллекцию Имя-Класс и по имени получать класс.
class User {
constructor(name, lastname) {
this.name = name;
this.lastname = lastname;
}
sayHi() {
console.log(this.name, this.lastname);
}
};
class Dog {
constructor(name) {
this.name = name;
}
bark() {
console.log(this.name + " say: Wow! Wow!");
}
};
const Classes = {"USER": User, "DOG": Dog};
function doSmth(name, lastname, className) {
const user = new Classes[className](name, lastname);
user.sayHi();
}
doSmth("Foo", "Bar", "USER");