使用另一个对象的属性作为键的对象

时间:2016-08-08 09:45:27

标签: javascript

我有一个像这样的对象: var myObj = {action1:0,action2:1,action3:2};

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

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 .'

我如何修改此代码以获得可读的描述?

1 个答案:

答案 0 :(得分:3)

在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更改为<> ,则执行上述操作后,它对dictObj中的媒体资源名称不会产生任何影响。