7

次の目的で、JavaScript 関数で静的変数を模倣しようとしています。

$.fn.collapsible = function() {
  triggers = $(this).children('.collapse-trigger');
  jQuery.each(triggers, function() {
    $(this).click(function() {
      collapse = $(this).parent().find('.collapse');
    })
  })
}

「折りたたみ」オブジェクトを保存して、呼び出しごとに「見つける」必要がないようにするにはどうすればよいですか? 名前付き関数を使用すると、「someFunction.myvar = collapse」のようなことができることはわかっていますが、このような匿名関数はどうですか?

ありがとう!

4

4 に答える 4

13

functioName.myVar = valueいずれかを使用するかarguments.callee.myVar = value、現在の関数名がない場合は、変数を関数に保存できます。

arguments.callee現在使用している関数です。

于 2009-03-15T03:35:35.103 に答える
9

匿名関数の場合、関数を返す関数を使用できます。

例えば:

var myAnonymousFunction = (function(){
    var myFirstStatic = $("#anElement");
    var anotherStatic = true;
    return function(param1,param2) {
        // myFirstStatic is in scope
        // anotherStatic also
    }
})();

チャームのように機能するはずであり、統計の初期化コードは1回だけ実行されることが保証されています。

于 2009-03-15T03:38:55.203 に答える
2

この質問に対するより良い答えは、Stack Overflow の他の場所にあるようです。

つまり、名前空間を汚染することなく、実際には無名関数に名前を付けることができますが、それでも自己参照は可能です。

mything.prototype.mymethod = function myKindOfFakeName() {
    myKindOfFakeName.called = true;
}
于 2012-01-31T01:07:05.247 に答える
0

そのような変数に関数を割り当てている限り、関数をとしてアクセスできるはずです。$.fn.collapsibleしたがって、変数をとして割り当てることができます$.fn.collapsible.myvar

于 2009-03-15T02:39:31.523 に答える