将多个输入有效映射到单个输出

时间:2015-06-16 03:12:01

标签: javascript

背景:我正在考虑为KeyboardEvent.keyKeyboardEvent.code编写一个polyfill。

我的建议是将旧标准中keyCode,charCode,shiftKey等的每个组合转换为新标准中的键或代码。

它可能看起来像这样:

function convertToNewKey(event) {
    var key;

    if (event.keyCode === 81 && event.charCode === 0 && shiftKey === false) {
        key = 'q'
    };    
    if (event.keyCode === 81 && event.charCode === 81 && shiftKey === true) {
        key = 'Q'
    };
    if (event.keyCode === 113 && event.charCode === 113) {
        key = 'q'
    };
    if (event.keyCode === 113 && event.charCode === 0) {
        key = 'F2'
    };
    // etc.

    return key;
}

这需要数千个'if'语句,而且我不确定它的运行速度有多快。关键事件应该快速响应用户输入。

是否有其他方式 - 例如嵌套哈希映射或字典 - 更容易编写,执行速度更快,或者两者兼而有之?

编辑:似乎哈希映射比'if'更快,尽管switch语句比两者都快,至少在某些实现中如此。 (来源:jsPerf)我可能需要做一些自己的速度测试。

还有一件事: Jan Wolter为他的research into keyboard events和他的script自动打印结果的提示。

0 个答案:

没有答案