2012-03-30 14 views
3

のeval()せずに、オブジェクトに文字列を変換しますその文字列から変数opcategoryを参照するオブジェクト??例えばjQueryのは、私は以下の変数がいる

var myarray = "op" + myparent; 

だから私はそうのようにそのオブジェクトを使用する可能性のある:

alert(myarray[2]); 

ありがとう! (読み:悪とハック)

もあまりエレガントあります
var myarray = op[myparent]; 

var op = { 
    day: [], 
    category: [], 
    barrio: [] 
}; 

あなたはこのように参照することができます。

+0

こんにちは、あなたは 'ev al() '?あなたはjQueryを使用しているので、[globalEval](http://api.jquery.com/jQuery.globalEval/) – NoLifeKing

+0

人が悪いと教えてくれる –

+0

'eval()'は悪くない聞いた。それを正しく使用し、正しいことが確認された入力だけであれば、それほど悪くはありません。誰かがfirebugにアクセスすると、javascriptを実行するコンソールがあるので、彼らが望むかもしれないサイトで 'eval()'を使うことができます。 :) – NoLifeKing

答えて

2

あなたのようにグローバルスコープで宣言された変数に対応することができます。あなたは、関数の内部でそれを固執する場合は、これは動作しません

var myCustomVar = "my value" 
, nameOfVar = "myCustomVar" 
alert(this[nameOfVar]) 
// you get "my value" 

var answer = (
    function(){ 
     var myvar = "the value" 
     return this["myvar"] 
    } 
).call({}) 
// answer will be 'undefined' 

は、明示的にスコープを結ぶことthisにvarsのしかし、動作します:

var answer = (
    function(){ 
     this.myvar = "the value" 
     return this["myvar"] 
    } 
).call({}) 
// 'answer' will be "the value" 
3

私は、オブジェクトが、このための最善の解決策だと思うのソリューションをそのopdayとその他がグローバル変数の場合にのみ動作します。すべてのグローバル変数を使用すると、動的に作成およびアクセス変数することができますwindowオブジェクトのプロパティです:

var myarray = window["op" + myparent]; 
2

名前でグローバル変数にアクセスする必要がある場合は、任意の手段によって、それを行う:

var myarray = window["op"+myparent]; 

しかし、それらのすべてをマップオブジェクトに入れる方がはるかに良いでしょう。

関連する問題