0

そのため、関数をオーバーライドしようとしていますが、そのメソッドには元のメソッドが含まれていますjQuery.extend()

    var origFunction = $.fn.pluginFunction;
    $.fn.extend({
        pluginFunction: function() {
               // `origFunction` is available via Closure, 
               // now how can I declare the $.extended function here
               // to preserve the original methods and then override
               // only the following object?

                   myObject = {
                        'key1' : 'val1',
                        'key2' : 'val2',
                   }
        }
    });
4

3 に答える 3

2

apply()を使用してオリジナルを呼び出します。

origFunction.apply(this,arguments);

しかし、myObjectが 内のローカル変数である場合origFunction、違いはありません。

于 2012-10-04T17:44:54.537 に答える
2

変更されたコード: をorigFunction使用して 呼び出しますapply。メソッドのプライベート変数でない場合にのみ、myObject を変更します (メソッドのオーバーライドからグローバルにアクセスできる必要があります)。

var origFunction = $.fn.pluginFunction;
    $.fn.extend({
        pluginFunction: function() {
               origFunction.apply(this, arguments); // 
               // `origFunction` is available via Closure, 
               // now how can I declare the $.extended function here
               // to preserve the original methods and then override
               // only the following object?

                   myObject = {
                        'key1' : 'val1',
                        'key2' : 'val2',
                   }
        }
    });
于 2012-10-04T17:45:16.207 に答える
0

ユーザーapply()

applyは、一連の引数を使用して関数を呼び出します。これはjQueryの一部ではなく、コアJavascriptの一部です。ただし、jQueryのドキュメントには次のような記述があります。

http://docs.jquery.com/Types#Context.2C_Call_and_Apply

構文:

somefunction.apply(thisobj, argsarray)

上記は関数somefunctionを呼び出し、これを関数のスコープ内でthisobjに設定し、argsarrayからの引数を関数への引数として渡します。

于 2012-10-04T17:59:47.647 に答える