javascript - 如何通过其名称作为字符串来调用函数?

标签 javascript ecmascript-6

所以我知道这个问题已经被问过几次了,但我找不到适合我的解决方案,而且我不明白这是如何正常工作的。

这里是涉及的函数:

import form from "./form"; //return some html
function changePage(e){
    console.log(e.target.dataset.component) // equal "form"
    //loadComponent(form) => is working 
    loadComponent(eval(e.target.dataset.component)) // => form is not defined    
}

function loadComponent(name)
{
    const wtv = name()
    document.getElementById('app').append(wtv)
}

那么我如何动态调用e.target.dataset.component

最佳答案

您肯定需要从标签到函数的映射:

import form from "./form"; //return some html

const datasetToComponent = {
  'form': form
};

function changePage(e){
  if (datasetToComponent[e.target.dataset.component]) {
    loadComponent(datasetToComponent[e.target.dataset.component]);
  }  
}

function loadComponent(name) {
  const wtv = name()
  document.getElementById('app').append(wtv)
}

关于javascript - 如何通过其名称作为字符串来调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331242/

相关文章:

javascript - 如何在字符串中搜索 "x"或 "any number"?

javascript - 单击图像时阻止父元素上的单击事件

javascript - 我如何实现不使用 es6 的react-wavesurfer 实例?

javascript - 在现代 javascript (es2015) 中将枚举实现为不可变类

javascript - 关联数组 - ES6

javascript - 按某些字母拆分字符串,同时跳过某些字母

javascript - 如何解决升级陀螺仪时出现 "incomplete keychange"错误

javascript - 如何从wordpress中的帖子页面id获取acf的图库图片url

javascript - 在嵌套对象上实现代理

javascript - 循环数组并获取上一个值时第一项的特殊情况?