0

SlidesJSはjQueryコンテンツスライダープラグインです。ソースを理解しようとしています。私はJavascriptとjQueryに比較的慣れていません。しかし、私が興味を持っているのは、ソースコードの次の行です。

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

コメントによって、作成者が2つの配列をマージするつもりであることがわかります。1つはのデフォルト値を含み、もう1つは関数の呼び出しを通じて渡される引数ですoptionoptionただし、どちらも同じ変数を参照していませんか?関数の引数slides(option)

とにかくうまくいくようです。ここの魔法は何ですか?

4

2 に答える 2

0

option引数は、Objectプラグインに対応する設定値を含むです。$.fn.slides.optionプラグインのデフォルト設定が含まれています。したがって、(optionパラメータを介して)カスタム設定を渡すと、これら2つのオブジェクトがマージされ、カスタム値がデフォルトを上書きします。

ここjQuery.extendで重要なのはメソッドです。2つ以上のオブジェクトの内容を最初のオブジェクトにマージします。

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.slidesoption$.fn.slides

関数のパラメーターまたは引数は、関数自体と同じスコープを共有する関数のプロパティとは異なり、関数ブロック内でのみアクセス可能なローカル変数のようなものです。

于 2013-02-23T14:49:06.373 に答える