2012-03-15 17 views
-1

私はオブジェクトへの参照を保持する変数fooがある場合:変数に格納されたオブジェクト参照を文字列として使用するにはどうすればよいですか?

var foo = someObj; 

どのように私は、文字列としてオブジェクトの名前を使用することができますか?

私が試した:

var bar = foo.valueOf() 

をしかし、それは単にオブジェクトへの別の参照を返しました。

私が持っているのは、多数のオブジェクトから選択するアルゴリズムです。私は、そのオブジェクトの名前を使用して、HTML要素のグループの中から選択したいと考えています。次のコードを使用しても機能しません(nullを返します)。

document.getElementById(foo) 

ありがとうございます。

+0

'var foo = {bar};'は無効です。オブジェクトリテラルにはキーと値が必要です。オブジェクトは変数の名前を知らない(しかし、それを含むオブジェクトで値を作ることはできる)。オブジェクトのキーや値は取得できますが、名前は取得できません。 –

+1

もう少し詳しく説明できますか? 'var foo = {bar} ' とvarバーで何を期待しているのですか? – Nemoy

+1

私は、単にfooがオブジェクトへの参照を保持し、別の変数ではないことを示しています。私はかなり新しいです。私はそれをもっと明確にするために編集しました。 – WyoBuckeye

答えて

4

オブジェクトの名前を取得する信頼できる方法はありません。

例:いくつかのケースで名前を取得する

var obj = {}; 
var obj1 = obj; 
var obj2 = obj; 

magically_get_and_print_name(obj); // What to print? "obj"? "obj1"? "obj2"? 

方法

  • 関数宣言 - (よくサポートものの、非標準)funcreference.name
  • コンストラクタのインスタンス - instance.constructor.name
+0

OK。助けてくれてありがとう。 – WyoBuckeye

0

あなたが持っているとしましょう:

var someObj = { 
    a: 15, 
    b: 36 
}; 

そして、あなたはやった:

var foo = someObj; 

fooから文字列"someObj"(または"foo")を取得する方法はありません。

できることは、作成時にオブジェクトに名前を追加することです。このようなもの:

var someObj = { 
    a: 15, 
    b: 36, 
    objName: 'someObj' 
}; 
var foo = someObj; 
console.log(foo.objName); // "someObj" 
関連する問題