jQuery.extend([deep], target, object1, [objectN])


version 1.0 以降

解説

1つ以上の拡張元オブジェクトから、オブジェクトを拡張します。
拡張元オブジェクトは、複数指定することができます。

引数

  • [deep]オプション (version 1.1.4 から)
    Boolean: ディープコピーをする場合は true
  • target
    Object: 拡張されるオブジェクト
  • object1
    Object: 拡張元のオブジェクト1
  • [objectN]オプション
    Object: 拡張元のオブジェクトN

戻り値

  • Object: 拡張された target オブジェクト

例1:target オブジェクトを object1, object2 オブジェクトで拡張します。

// target オブジェクト(拡張されるオブジェクト)
var target = {
    key1: "value1",
    key2: 200
};

// object1 オブジェクト(拡張元オブジェクト1)
var object1 = {
    key2: 300,
    key3: 500,
    method1: function() { return "a"; }
};

// object2 オブジェクト(拡張元オブジェクト2)
var object2 = {
    method1: function() { return "b"; }
};

// target オブジェクトを、object1、object2 で拡張
var ex = $.extend(target, object1, object2);

// 拡張したオブジェクトの内容を表示
$.each(ex, function(key, value){
    $("#test_result").append(key + ":" + value).append("<br />");
});


target オブジェクトを上書きしたくない場合

次のように jQuery.extend() を呼び出すと、target オブジェクトそのものを上書きし、拡張します。

// target オブジェクトが上書きされる
$extend(target, object1);

target オブジェクトを上書きせず、target オブジェクトを拡張した結果のオブジェクトを生成する場合には、次のように第1引数に空のオブジェクトを指定します。

// target オブジェクトは上書きされない
// extended オブジェクトは、target を object1 で拡張した結果のオブジェクト
var extended = $extend({}, target, object1);