[英]Object with another's object's property as a key
我有一個這樣的對象: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 .'
如何重新編寫此代碼以獲得可讀的描述?
在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
的屬性名稱沒有任何影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.