1

うーん、私はもっと良いタイトルを知りませんでした、
私はsthをする方法があるかどうか疑問に思います。このような:

function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
    //do some more Stuff
    var nameofthevariable = myVar//somehow get the Variables name
    myVar.somePropertie = "SomeOtherStuff";
   }
}
myVar = new myFunc();
myVar.myMethod(x)
  • 関数内からNameまたはVar自体を取得する方法はありますか?それはどのインスタンスを保持していますか?したがって、データを元に戻すことができます。メソッドは、関数またはメソッドに引数として渡さずに、変数にデータを作成します=)

答えてくれてありがとう

答え

答えてくれてありがとう=)、ああそれは悲しい
問題thisは私がオブジェクトを持っていることです、オブジェクト
のプロパティはのインスタンスを作成し、これmyFuncを実行するmyMethod()
と新しいプロパティが追加されますmyObj、それで私はmyMethodのインスタンスから分離されたからの出力を持っていますmyFunc()

function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
    //do some more Stuff
    var nameofthevariable = myObj//somehow get the Variables name
    myObj.somePropertie = "SomeOtherStuff";
   //and here i could do
   this.Parent.somePropertie = "SomeOtherStuff";
   }
}
myObj = {}
myObj.myProp = new myFunc();
//i could do:
myObj.myProp.Parent = myObj
//
myObj.myProp.myMethod(x)

しかし、その後myObj、パラメータとして、myMethodsthを追加したいオブジェクトに移動したかったので、変数名を取得して2回渡すことができました。

thisのインスタンスよりも高いレベルの変数にアクセスできないため、そのコンテキストでは機能しないと思いますmyFunction

あなたの編集

そうそう、ありがとう=)実際のコードでは「特権」関数であり、メソッドを呼び出すことができ
ます。質問で編集します。
指摘してくれてありがとう、ここの質問でこれを書いているときに気づいていませんでした。 。
インスタンスを保持するオブジェクトにデータを動的に戻す方法が見つからないことを除いて、うまく機能します。」

4

1 に答える 1

2

変数の名前を取得することはできませんが、そのインスタンスが呼び出された場所にプロパティを追加する方法を尋ねているようです-その場合、使用はmyMethod()機能します:myVarmyVarmyFuncmyMethod()this

function myFunc() {
    //do some Stuff...
   this.myMethod = function(x) {
      //do some more Stuff
      this.somePropertie = "SomeOtherStuff";
   }
}
myVar = new myFunc();
myVar.myMethod(x)

定義した方法myMethod()は、内部からのみアクセスできるプライベート関数であることに注意してください-プロパティにする必要がmyFunc()ある構文で呼び出すには(そのため、そのビットも変更しました)。myVar.myMethod()

関数内の の値はthis、関数がどのように呼び出されたかによって異なります。オペレーター JSで呼び出すmyFunc()と、新しく作成されたインスタンスに設定されます。「ドット」構文でメソッドを呼び出すと、 JSは.newthismyVar.myMethod()thismyVar

詳細については、MDN の記事thisを読むことをお勧めします。this

于 2012-07-03T06:31:31.963 に答える