0

重複の可能性:
関数に渡された後の変数の元の名前を決定
する オブジェクトの参照名を取得しますか?

これを説明する方法が正確にはわかりません。オブジェクト自体で、変数名の文字列値を取得しようとしています。

例えば:

var MyObject = function(){
  var that = this;

  that.alertMyName = function(){
    var name_of_instance = that.__name__;
    alert(name_of_instance); //hoping to retreive a string containing 'var1'?
  }

};

var var1 = new MyObject();
var1.alertMyName();
4

3 に答える 3

3

とにかく、この特定の例ではなく、オブジェクトが参照されている変数の名前を決定することはできません。同じオブジェクトを参照する多くの変数がある場合を考えてみてください。その場合、何が返されると予想されますか? オブジェクトを参照する変数がまったくない場合はどうなるでしょうか。(式を考えてみてくださいnew MyObject().alertMyName()-- そのオブジェクトの名前はどうあるべきですか?)

オブジェクトに名前を付けたい場合は、明示的にします:

var MyObject = function(name){
  var that = this;

  that.alertMyName = function(){
    alert(name);
  }

};

var var1 = new MyObject("var1");
var1.alertMyName();
于 2012-06-13T23:16:27.220 に答える
0

確かに、これは簡単です (事実上不可能です)。コードを印刷し、関数呼び出しまで読み込んでから、変数名を書き留めます。

コードはもう少し複雑になりますが、エッジ ケースでは実行可能です。そのドキュメントが存在する場所の明示的な知識を必要とする関数を呼び出すドキュメントを解析する必要があります。呼び出しを使用する$.ajaxと、呼び出し元のスクリプトまたはページ全体を変数にロードし、使用した変数名で関数呼び出しが見つかるまでスライディング ウィンドウで解析できます。ただし、見つかった関数呼び出しが現在のインスタンスに関連付けられたものであることを確認する必要があります。

于 2012-06-14T00:25:57.483 に答える
0

あなたがするなら

for (x in obj){}

javascript のオブジェクトでは、x はオブジェクト属性/変数名の名前を保持します。その方法で必要なものを取得できると思います:)

于 2012-06-13T23:12:28.093 に答える