JavaScript 函数名的三进制?

JavaScript Ternary for function names?

我遇到过多次基于二进制情况调用函数的情况,而三进制可以正常工作:

buttonPressed ? files.audio.current.play() : files.audio.current.stop()

但是看到那些额外浪费的代码了吗?有没有办法做更像的事情:

files.audio.current.(buttonPressed ? play : stop)()

使用方括号表示法,return函数名作为三进制字符串:

files.audio.current[buttonPressed ? 'play' : 'stop']()

稍微扩展一下 Ori Drori 的回答:

在 JavaScript 中,函数等同于对象上的字段。

因此在像这样的 js 对象中:

var person = {
    name: "Steve",
    sayHello: function() {
        alert("Hello!");
    }
}

person.nameperson['name'] 都是引用名称字段的有效方式。

因此,sayHello 方法可以由 person.sayHello()person['sayHello']()

调用

为了巩固您的理解,请尝试 person['sayHello'] 并查看返回的内容!

希望对您有所帮助!