4

何らかの理由で、 $(selector).myPlugin(); のような既存の要素に直接バインドされているプラ​​グインの例しか見つかりません。

私ができるようにしたいのは、オプションを指定して new myPlugin() を呼び出すだけです。

new myPlugin({
    'option1': 'option 1 value',
    'option2': 'option 2 value',
    'option3': 'option 3 value',
    'option4': 'option 4 value'
});

最大 8 つのパラメーターを持つ通常の関数がありますが、常にすべてを定義する必要はありません。また、定義する必要のないすべてのパラメーターのデフォルトを含める必要はありません。

function myFunction(param1, param2, param3, param4, param5, param6, param7, param8){
    // Operations here
}

場合によっては、最初と 5 番目のパラメーターなどを定義する必要があるだけで、残りのパラメーターにはデフォルトが必要です。これは苦痛です。

たぶん、検索でこのような例を見逃したかもしれません。

4

2 に答える 2

5

名前空間を使用$して新しい関数を宣言し$.extend()、デフォルトを処理するために使用できます。

(function($) {
    var defaults = {
       name: 'Jack',
       number: '555-jack'
    }

    $.myPlugin = function(options) {
        var settings = $.extend({}, defaults, options);

        this.someFunction = function() {
            // you can use settings here
        }
    }
}(jQuery));

デフォルトをプライベート変数として定義し(外部コードはアクセスできません)、myPluginコンストラクター内で使用します。呼び出しがどのように機能するかの例:

var x = new $.myPlugin({
    number: '666-something'
});

コンストラクター内では、settings変数にはdefaultsコンストラクター引数からの名前と番号が含まれます。

于 2012-05-31T14:58:41.517 に答える
0

個々の値ではなく、配列または JSON を単一のパラメーターとして関数に渡すことができます。

于 2012-05-31T14:57:03.220 に答える