枚举对象作为字典键

Mic*_* IV 3 javascript

我想在JavaScript中使用所谓的"枚举"对象作为字典键(实际上,它也是字典AFAIK).

这不起作用:

    var State ={DEFAULT:0,ACTIVE:1 ,INACTIVE:2,ALERT:3};

    var statesDict =  {
      State.ACTIVE : {color:0x00ff00}
      State.INACTIVE: {color:0x000000}
    };
Run Code Online (Sandbox Code Playgroud)

虽然这个做了:

   var State ={DEFAULT:0,ACTIVE:1 ,INACTIVE:2,ALERT:3};

    var statesDict =  {
      1: {color:0x00ff00}
      2: {color:0x000000}
    };
Run Code Online (Sandbox Code Playgroud)

为什么?是不State.{prop name}应该被它的价值取代?

Nin*_*olz 6

您可以使用带括号的计算属性名称.

var State = { DEFAULT: 0, ACTIVE: 1, INACTIVE: 2, ALERT: 3 },
    statesDict = {
        [State.ACTIVE]: { color: 0x00ff00 },
        [State.INACTIVE]: { color: 0x000000 }
    };

console.log(statesDict);
Run Code Online (Sandbox Code Playgroud)

  • 对象的所有键,甚至数组的索引都是字符串。 (2认同)