jQuery.extend

WEB+DB Press No.60のjQueryに関する記事がとても面白かった。で、jQueryで提供されているextendの使い方を今になって理解してきたのでメモっておく。

jQuery.extendはRubyでいうところのHash#merge!だった。

var foo = { a: 1 }
jQuery.extend(foo, { b: 2 })
//=> { a: 1, b: 2 }
foo
//=>{ a: 1, b: 2 }

なので、次のようにするとハッシュ引数のデフォルト値の設定とかができて便利(Hash#reverse_merge的なこと)。

function foo(args) {
  args = jQuery.extend({ a: 1, b:2 }, args);
    :
}

ついでに、jQuery.extendはオブジェクトのコピーにも使える。ちゃんと見てないけどたぶん浅い。

var foo = { a: 1 }
var bar = jQuery.extend({}, foo)
//=> { a: 1 }

ただしfooはFooのインスタンスだけど、barはObject直下のインスタンス(?)なのでFooをプロトタイプに持たないので要注意(用語がわからないけどこれで合ってるのかな)。