Javascript 另一种编写代码的方法

Javascript 另一种编写代码的方法,javascript,coding-style,Javascript,Coding Style,我用JavaScript编写代码。按下时,我需要处理多个键。这种代码的结果 var key = event.keyCode; if (key === 39 { //some code } if (key === 40) { //some code } if (key === 38) { //some code } if (key === 13) { //some code } 我不喜欢这种方法,如果有其他的美丽的方式呢

我用JavaScript编写代码。按下时,我需要处理多个键。这种代码的结果

var key = event.keyCode;
if (key === 39 {
      //some code
    }

if (key === 40) {
      //some code
    }

if (key === 38) {
      //some code
    }

if (key === 13) {
     //some code
}
我不喜欢这种方法,如果有其他的美丽的方式呢?以面向对象编程的方式?谢谢

A:switch语句用于根据不同的条件执行不同的操作

 switch(event.keyCode) {
        case 39:
            code block
            break;
        case 40:
            code block
            break;
        default:
            code block
    }

JavaScript本身不是一种面向对象的语言

您可以做的是创建一个映射对象

const obj = {
    "39" : () => { //do this },
    "40" : () => { //do this },
    "38" : () => { //do this },
    "13" : () => { //do this }
}
然后,当您的事件代码出现时。。。使用
constwhere=obj[event.keyCode]()


我还相信,某种形式的解构可以使这一点更加有趣,但我必须仔细研究一下。

可能需要大量的工作,但这是针对键名和支持键组合的:

var keyboardEvents = {};
var keys           = {};

document.addEventListener('keydown',function(e){

    keys[ e.key.toLowerCase() ] = true;

    for(var s in keyboardEvents){
        var p = s.split('+').map(function(k){return k.toLowerCase()}); 
        var f = true;
        for(var i=0;i<p.length;i++) if(!keys[ p[i] ]) f = false;
        if(f) keyboardEvents[s](e);
    }
});

document.addEventListener('keyup',function(e){
    delete keys[ e.key.toLowerCase() ];
});

使用
开关
句子使用开关,速度更快这可能对你有帮助。我不喜欢开关。还有其他方法吗?你可能会看到这一点,但我认为switch语句是最有用的!谢谢可能需要在使用之前检查返回值,除非您绝对确定只会按下这4个键。是否最好切换?@Carcigenicate非常正确,您可以在运行函数之前使用
obj.hasOwnProperty(event.keyCode)
检查返回值,否则,它将出错。很好。旧浏览器呢?上面提到了未映射的代码。在调用该方法之前,请检查属性是否存在。
keyboardEvents['control+c'] = function(e){ ... };
keyboardEvents['alt+c+b+k'] = function(e){ ... };