javascript - 如何通过函数的参数在 javascript 函数中触发 javascript 函数?

标签 javascript jquery

我想在另一个函数中动态地运行一个函数...

假设:

<script>
var x = function(r,s){
    r(s);
}
var a = function(item){
    alert("aA");
}
var b = function(item){
    alert("bB");
}
</script>

这可能吗? 我从函数 x 的参数中获取“r”作为函数名,我想运行它。

if r=a, then it will trigger function a()

and if r=b, function b triggered instead...

我该怎么做?

最佳答案

您可以简单地测试 r 并根据需要调用每个函数。

if (r === 'a') {
    a(s);
} else if (r === 'b') {
    b(s);
}

或者,如果您对此有很多功能,或者并不总是提前了解所有功能,您可以将它们组织在一个Object 中并使用bracket operators。将 r 视为访问它们的键名:

var commands = {
    a: function(item){
        alert("aA");
    },

    b: function(item){
        alert("bB");
    }
};

var x = function (r, s) {
    var command = commands[r];

    if (typeof command === 'function') {
        command(s);
    }
};

x('a', 'foo'); // alerts `aA`

或者,甚至只是将 ab 作为参数本身传递给您当前定义的 x()

x(a, 'foo'); // calls `a` as `r`, passing 'foo' along

关于javascript - 如何通过函数的参数在 javascript 函数中触发 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627813/

相关文章:

类中的 JavaScript 事件

javascript - 在新页面加载之前页面淡出(但跳回 View )+ Safari 后退按钮问题

javascript - 如何使用 Node.js 和 mongodb 存储 session 值?

jquery - 使用 ID 的元素偏移量运行 ScrollTop

javascript - 获取动态 Iframe 的内容

javascript - 禁用侧边栏滚动(如果是双子座滚动条)

javascript - Gulp watch 不监视文件更改

javascript - 找不到 Nuxt + Netlify Forms 自定义成功页面

javascript - 如果另一个属性相同,则删除一个属性

javascript - AngularJS - ng-options 完成填充选择后的 jquery 插件 SelectBoxIt