2009-09-17 6 views
9

このようにして、whatever_way_you_do_this = somethingと言う関数を作成できました。これは可能ですか?基本的には、変数の名前を保持する文字列を与えることによって、どの変数を設定したいのかを関数に伝えることができます。変数の名前を含む文字列を使用してjavascript変数にアクセスする方法はありますか?

おかげ

+0

「グローバル変数をJavaScriptで名前文字列で動的に取得」とは異なり、この質問は変数がグローバルであることについては何も言及していません。それは重要です。 –

答えて

20

考える:

var value = x['myproperty']; 

var x = { 
    myproperty: 'my value' 
}; 

は、次の方法で値にアクセスすることができます

yグローバル変数を探していたら、そのコンテナ(window)をチェックします。

var value = window['x']['myproperty']; 
3

それはmyVarという名前のグローバル変数である場合は、使用することができます。

window["myVar"] 
+1

詳しくは次のとおりです:function setGlobal(varName、varValue){window [varName] = varValue; } –

6

あなたは

eval(variableString); 

は、変数の名前を含む文字列から変数にアクセスすることができます eval()

+0

さらに多彩な答え。現在のベストアンサーでは、プロパティにしかアクセスできません。これはプレーン変数とプロパティ 'eval(" x.myproperty ");'の両方にアクセスできます。好奇心のために、なぜevalは推奨されないのですか? –

+1

@BryantJacksonセキュリティは大きな理由の1つで、本番マシン上で任意のコードを実行する可能性を実際には作りたくない – nickford

2

eval関数を使用することはお勧めしませんように多くの注意を続行し使用することができます。

eval('baseVariableName'+index) = 'something'; 
関連する問題