1

2 つの jquery 関数 (親関数とオーバーライド関数) があります。

親関数:

( function ( $ )
{
    var one = null;
    var two = {};

    $.fn.method = function(){
    // parent code;
    }
   })( jQuery ); 

オーバーライド機能:

( function ( $ )
{

$.fn.method = function(){
    // override code;
  }
  })( jQuery ); 

これは期待どおりに機能しています。しかし、変数 one または two にアクセスしようとすると、アクセスできません。なぜだかわかりますか?親を変更せずにオーバーライド関数から変数 one と two にアクセスするオプションはありますか?

注:私の場合、親とオーバーライドは、antを介してビルドするときに1つの共通jsにマージされた2つの個別のjsファイルです。

4

1 に答える 1

3

いいえ、できません。ここにあるのはクロージャーであり、クロージャーに関するポイントは、他の場所から変数にアクセスできないことです。

それらにアクセスしたい場合は、アクセサを追加する必要があります:

( function ( $ )
    {
        var one = null;
        var two = {};

        $.fn.method = function(){
        // parent code;
        }
        $.fn.getOne = function() {
            return one;
        };
        $.fn.setOne = function(n) {
            return one = n;
        };
})( jQuery ); 

この関連する質問に興味があるかもしれません。

于 2013-01-02T11:20:56.497 に答える