言われなきゃ気付かない$.extendの引数。

$.extendも$.fn.extendも同じなんだけど、このメソッドには引数が3種類ある。

まずはメジャー系2種。

$.extend({ foo: 'bar' }); // jQuery.foo = 'bar';

var o = $.extend({ foo: 'bar' }, { fizz: 'buzz' }); // merge but shallow

jQuery自体を拡張する1引数extendと、引数をマージする複引数extend。
この辺はplugin作ったりなんだりで良く見かける。


わざわざ「but shallow」とか書いた時点でオチが読めるとは思うけど、
第3のコール方法は、deep mergeのためのもの。

var o = $.extend(true, { foo: 'bar' }, { fizz: 'buzz' });

第1引数をboolean値にすると、deep mergeの有無を指定するフラグとして扱われる。


デフォルトがshallow mergeなだけに何かしらdeep mergeする手段はあると思ったけど、こういうことだったらしい。