2013-02-23 68 views
0

SlidesJS是一個jQuery內容滑塊插件。我正試圖理解來源。我對Javascript和jQuery比較陌生。不過,我很感興趣,是這一行的源代碼:SlidesJS Source - 用指定選項覆蓋默認值

$.fn.slides = function(option) { 
    // override defaults with specified option 
    option = $.extend({}, $.fn.slides.option, option); 
     ... 
} 

我通過筆者擬合併兩個數組,包含默認值option之一,另一個是option的評論理解通過調用該函數傳遞的參數。但是,它們是否都指向相同的變量:函數slides(option)的參數?

無論如何它似乎工作。 這裏有什麼魔法?

回答

0

option參數是一個Object,它包含插件的相應設置值。 $.fn.slides.option包含插件的默認設置。因此,當您傳遞自定義設置時(通過option參數),這兩個對象將合併,您的自定義值將覆蓋默認值。

jQuery.extend方法在這裏是關鍵。它將兩個或更多對象的內容合併到第一個對象中。

option = $.extend( 
       {}, // the target new Object which represents the final merged options 
       $.fn.slides.option, // Object with default option values 
       option // Object with custom option values (the passed argument) 
     ); 

請參閱documentation here

+0

我明白'$ .extend'方法。但默認選項沒有在代碼中的任何地方定義(如果是這樣,我找不到) 編輯:我明白了,謝謝... – 2013-02-23 14:13:19

0

但是,它們是否都指向相同的變量:參數 函數幻燈片(選項)?

答案是否定的,$.fn.slides.option$.fn.slides功能的一個屬性,而option$.fn.slides功能的功能參數/參數。

函數參數或變量就像只能在函數塊內訪問的局部變量,不同於與函數本身共享相同作用域的函數的屬性。