簡體   English   中英

使用用戶擴展jQuery插件默認選項

[英]Extending jQuery Plugin default options with user's

在下面的演示中:這行代碼中發生了什么?

settings = $.extend({}, defaultSettings, settings || {});

上面和這個之間有什么區別:

    if(settings){
    settings = $.extend(defaultSettings, settings);
}

==================================

(function($){
    var defaultSettings = {
        mode            : 'Pencil',
        lineWidthMin    : '0',
        lineWidthMax    : '10',
        lineWidth       : '2'
    };

    $.fn.wPaint = function(settings)
    {
        settings = $.extend({}, defaultSettings, settings || {});

        return this.each(function()
        {
            var elem = $(this);

            //run some code here
        });
    }
})(jQuery);
settings = $.extend({}, defaultSettings, settings || {});

jQuery $ .extend()方法從右到左將一個或多個對象的屬性復制到另一個對象中。 在此特定示例中,該方法正在傳遞三個對象: {} (空對象), defaultSettings然后settings (如果settings不存在,則為空對象)。 因此,從右到左,設置的所有屬性都將被復制到defaultSettings ,然后將其結果復制到空對象( {} )中。 所有這些的結果是settings中的屬性(用戶的自定義選項)將優先於defaultSettings ,然后它們都被復制到空對象中。 空對象的原因是因為$ .extend()實際上通過引用修改了第一個參數,所以傳入一個空對象作為第一個對象實際上是在不修改任何對象的情況下進行克隆。

if(settings){
    settings = $.extend(defaultSettings, settings);
}

除了用空對象替換settings (如果它不存在)之外,它不會執行給定的代碼。

更新:關於settings || {} settings || {} ,這意味着使用設置對象(如果它存在)(技術上,如果它是真實的) 使用空對象。 它避免傳遞undefined的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM