我有一个像这样的对象: 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 .'
我如何修改此代码以获得可读的描述?
答案 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
中的媒体资源名称不会产生任何影响。