- ベストアンサー
JavaScriptで変数名を取得する方法
var 変数名 = new 関数名(引数1,引数2・・・);とした場合 alert(変数名.○○)などで変数名を表示する○○はあるでしょうか? 現在は引数1に変数名をセットして、関数内のプロパティに保持して、 alert(変数名.id)で表示できるようにしています。 ただしこれでは手間がかかったり、間違いが起こります。 もしそうでない方法があればご教授下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 すみません。 全然内容を理解していませんでした。 面白そうなのでちょっと調べてみました。 以下のような感じでどうでしょう? <html> <head> <script type="text/javascript"> function obSub(ob) { var r = []; var i = 0; for (var z in ob) { if (ob.hasOwnProperty(z)) { r[i++] = z; } } return r; } function getVarName(variable){ return obSub(window).map(function(a){ if( window[a] === variable ){return a} }).sort()[0] } var f = new function func(){} function test(){ alert(getVarName(f)); } </script> </head> <body> <form> <input type = "button" name="act" value="test" onClick="test()"> </form> </body> </html> 参考:http://www.codingforums.com/showthread.php?t=137124 (というか、ほぼこちらの「rnd_me」さんのコピペですw)
その他の回答 (1)
- utun01
- ベストアンサー率40% (110/270)
こういうことでよろしいのでしょうか? <html> <head> <script type="text/javascript"> var func = function(){ this.a = 1; }; function test(){ var f = new func(); alert(f.a); } </script> </head> <body> <form> <input type = "button" name="act" value="test" onClick="test()"> </form> </body> </html> Javascriptは基本全部クラスとして扱われていたと思うので、 そういう操作は大体何かやり方がありますよ。
お礼
ありがとうございます。 こういうこと・・・ではないのです。
補足
示して下さった例でいうと「f」を取得する操作がほしいのです。 今のところは var func=function(name){ this.name=name; } var f=new func("f"); みたいな形でやっていますが もっといい方法がないかと思って質問しました。
お礼
再度回答ありがとうございます。 こちらの説明が悪くて申し訳ございません。 じっくり拝見させていただいたのですが ちょっと違うかも・・・
補足
これですとwindowオブジェクトに指定した変数があるかどうかの 判定だけのような気がします。 JavaScriptにクラスの概念がないそうですが例えていうと・・・ 「インスタンス生成時にインスタンス名をプロパティに自動でセット」 という感じです。 上記の例でいいますとalert(f.getVarName());でfを表示したいです。