Javascript 对象与另一个';s对象';属性作为密钥

Javascript 对象与另一个';s对象';属性作为密钥,javascript,Javascript,我有一个这样的物体: var myObj={action1:0,action2:1,action3:2} Test函数从这个列表中获取值作为参数,为了简化单元测试,我希望在函数内部获得人类可读的标签 function myFunc(someaction, anotheraction, blablabla) { console.log("Action: " + arguments[0] + " then action: " + arguments[1]); //some code

我有一个这样的物体: var myObj={action1:0,action2:1,action3:2}

Test函数从这个列表中获取值作为参数,为了简化单元测试,我希望在函数内部获得人类可读的标签

function myFunc(someaction, anotheraction, blablabla)
{
    console.log("Action: " + arguments[0] + " then action: " + arguments[1]);
    //some code here
}  
所以在函数内部,我只能看到像0 1 2这样的值

我试着创建这样的新对象

var dictObj = {myObj.action1:"action1", myObj.action2:"action2", myObj.action3:"action3"}
然后将值解析为函数内部的名称:

console.log("Action: " + dictObj[arguments[0]] + " then action: " + dictObj[arguments[1]]);
但它没有起作用,因为

'Uncaught SyntaxError: Unexpected token .'

如何重新编写此代码以获得可读的描述?

在ES5及更早版本中,您必须使用一系列语句创建该对象:

var dictObj = {};
dictObj[myObj.action1] = "action1";
dictObj[myObj.action2] = "action2";
dictObj[myObj.action3] = "action3";
从ES2015(也称为“ES6”)开始,您可以使用对象初始值设定项中的计算属性名称来执行此操作:

let dictObj = {
    [myObj.action1]: "action1",
    [myObj.action2]: "action2",
    [myObj.action3]: "action3"
};
您可以使用
[]
中的任何表达式来创建属性名称;在本例中,它只是一个简单的属性查找


在这两种情况下,请注意,没有活的关系;如果您稍后将
myObj.action1
更改为42,在执行上述操作后,它对
dictObj

中的属性名称没有任何影响,请像这样执行:
var dictObj={};dictObj[myObj.action1]=“action1”;dictObj[myObj.action2]=“action2”;dictObj[myObj.action3]=“action3”我不知道第二种方法:)今天学到了新东西嗯…我确信我也尝试过这种方法,但失败了,我还尝试用引号来转义dot(dictObj['myObj.action1']=“action1”)。不管怎样,你的建议奏效了