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
}

有时我只需要定义第一个和第五个参数或任何其他参数,其余的我需要默认值。这是一种痛苦。

也许我在搜索中错过了这样的例子。

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 回答