2011-02-17 8 views
2

私はこのサイトを検索して、グーグルでも答えは見つからないようです。変数としてのインスタンス名

Iインスタンス名を変数として提供される場合、動的オブジェクト・インスタンスを作成し、そうではなく、使用して、オブジェクトのプロパティにアクセスする必要があります。私は、変数を使用してアクセスする必要が

var n = 'abcd'; 

eval('var '+n+' = new myinst();'); 

abcd.property = value; 

を:

['abcd'].property = value; 

しかし、これは動作していないようです - 私は何が欠けていますか?

答えて

2

このようにevalを使用しないでください。 、それが存在する場合

var baseObj = {}; 
var n = 'abcd'; 

baseObj[n] = new myinst(); 
baseObj[n].property = value; 

これはdeleteそれに能力を含めて、変数の上にあなたを完全に制御することができます、

delete baseObj[n]; 

またはチェック:あなたは簡単代わりに、いくつかのベースオブジェクトへの「ダイナミック」の変数を割り当てることができます

n in baseObj; 
+0

おかげさまで、ありがとうございます:-) – crankshaft

0

それはあなたが使用することができGlobalの場合:

var n = 'abcd'; 
window[ n ] = new myInst(); 
window[ n ].property = value; 
2

あなたは、配列表記を使用して、「変数の変数」を行うことができますが、あなたはそれのためのコンテキストを提供する必要があります。 windowだろうグローバルスコープでは、:。

var foo = 'bar'; 
window[foo] = new myinst(); 
window[foo].property = 'baz'; 
alert(bar.property); 

代替window変数変数が住んでいる必要があり、他のどんなスコープの変数変数は、実際にも使用すべきではないアンチパターンです。

関連する問題