0

SlidesJS是一个 jQuery 内容滑块插件。我试图了解来源。我对 Javascript 和 jQuery 比较陌生。但是,我感兴趣的是源代码中的这一行:

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

我从评论中了解到作者打算合并两个数组,一个包含默认值,option另一个是option通过调用函数传递的参数。但是,它们不是都引用同一个变量:函数的参数slides(option)吗?

无论如何,它似乎工作。这里有什么魔力?

4

2 回答 2

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)
         );

请参阅此处的文档

于 2013-02-23T13:26:42.813 回答
0

但是,它们不是都引用同一个变量:函数 slides(option) 的参数吗?

答案是否定的,$.fn.slides.option是函数的属性$.fn.slides,而是option函数的函数参数/参数$.fn.slides

函数形参或实就像一个只能在函数块内访问的局部变量,不像函数的属性与函数本身共享相同的范围。

于 2013-02-23T14:49:06.373 回答