1

これが可能かどうかはわかりませんが、文字列と同じ名前のオブジェクトを選択して .each ループで使用する方法はありますか?

    var test = "myobj"; 

    var myobj = {"1" : "2", "2" : "3"};

    function testing(test){

         // If i do a console.log on the variale "test":
         console.log(test); // will show the string: "myobj"

         typeof(test); // is string

         // somehow select the object with the name myobj, and maybe iterate through it?
         jQuery.each(myobj, function(key, val){
            alert(val); // right now this will alert the actual letters: m y o b j
         });

    }
4

3 に答える 3

2

次のように、オブジェクトのプロパティを文字列名で指定できます。

obj["property"]

あなたの例testでは、のプロパティであるグローバルとして作成しwindowました(ブラウザでこれをテストしていると思います):

window[myobj]
于 2013-06-15T18:43:42.047 に答える
0

他の回答が指摘したように、あなたの例では、変数がグローバルであるwindow[test] 場合に使用できます。myObj

ただし、これは行うべき方法ではありません。おそらくmyobj2yetAnotherObj、 などの関連する変数が他にもいくつかあるでしょう。そうでなければ、これを行う意味はあまりありません。しかし、これらの変数でグローバル名前空間を混乱させたくはありません。

代わりに、他のすべての変数を含むオブジェクトを作成します。

var myObjects = {
    myobj: {"1" : "2", "2" : "3"},
    myobj2: {"4" : "5", "6" : "7"},
    yetAnotherObj: {"8" : "9", "10" : "11"}
};

testそして、これらのオブジェクトのいずれかの名前を持つ変数が与えられた場合、次を使用します。

myObjects[test]

これにより、グローバル名前空間が乱雑になるのを回避できるだけでなく、そのmyObjects中に含まれるオブジェクトがグローバル変数ではなくローカル変数であっても機能します。

于 2013-06-15T19:31:55.697 に答える