2016-08-08 10 views
0

私はこのようなオブジェクトを持っています: var myObj = {action1:0、action2:1、action3:2};他のオブジェクトのプロパティをキーとして持つオブジェクト

テスト機能は、私は、関数の内部で、私は0から1のような値のみを見ることができる機能の内部に人間が読めるラベル

function myFunc(someaction, anotheraction, blablabla) 
{ 
    console.log("Action: " + arguments[0] + " then action: " + arguments[1]); 
    //some code here 
} 

を取得したいユニットテストを簡素化するためのパラメータとして、このリストから値を取得し、:私はこの

var dictObj = {myObj.action1:"action1", myObj.action2:"action2", myObj.action3:"action3"} 

のように新しいオブジェクトを作成し、その関数の内部名に値を解決しようとした回避しようとすると、2

console.log("Action: " + dictObj[arguments[0]] + " then action: " + dictObj[arguments[1]]); 

しかし、それは私が読める記述を取得するには、このコードを手直しするにはどうすればよいので

'Uncaught SyntaxError: Unexpected token .' 

で動作しませんでしたか?

+0

次のようにします。 'var dictObj = {}; dictObj [myObj.action1] = "action1"; dictObj [myObj.action2] = "action2"; dictObj [myObj.action3] = "action3"; ' –

答えて

2
ES5で

およびそれ以前、あなたは一連のステートメントでそのオブジェクトを作成する必要があります。ES2015(別名「ES6」)のよう

var dictObj = {}; 
dictObj[myObj.action1] = "action1"; 
dictObj[myObj.action2] = "action2"; 
dictObj[myObj.action3] = "action3"; 

、あなたはオブジェクト初期化子で計算されたプロパティ名でそれを行うことができます

let dictObj = { 
    [myObj.action1]: "action1", 
    [myObj.action2]: "action2", 
    [myObj.action3]: "action3" 
}; 

[]内の任意の式を使用してプロパティ名を作成できます。この場合、単純なプロパティの検索です。

いずれの場合も、ライブの関係はありません。 myObj.action1を42 の後にに変更した場合は、上記を実行した後でプロパティ名に影響しません。dictObj

+1

私は2番目の方法についてはわかりません:)今日は新しいことを学んだ –

+0

うーん...私もこの方法で試したと確信していましたが、エスケープドット(dictObj ['myObj.action1'] = "action1";)。 とにかくあなたの提案はうまくいった –

関連する問題