jQuery その他のユーティリティメソッド

$.extend()は、複数のオブジェクトをマージし、各オブジェクトが内包するプロパティを対象オブジェクトにまとめます。引数が1つだけの場合、対象オブジェクトが省略されたと見做し、jQueryオブジェクトそのものが対象オブジェクトとして選択されます。第1引数は「ディープコピー」スイッチで、既定値はfalseです。これをtrueに設定すると、オブジェクトが再帰的にマージされます。

具体的には、オブジェクトのプロパティ自体がオブジェクトや配列で、マージ先に同じ名前のプロパティがあった場合、既定の動作ではマージ元のプロパティでマージ先のプロパティが上書きされます。ディープコピースイッチがtrueの場合、プロパティのオブジェクトや配列もマージされます。
$.noop()は、「何もしない」関数です。実行にコールバック関数が必要なメソッドなどで、コールバック関数に何もさせたくない場合などに使用します。
$.globalEval()は、引数として与えたJavaScriptコードを実行します。$.parseHTML()は与えられた文字列をDOMノードとして解釈します。このメソッドではスペース文字もDOMのテキストノードに変換されますので、$.trim()で前後の不要なスペースを除去してから渡すようにします。
第2引数の「コンテキスト」に関して、jQuery3.0以降セキュリティ上の観点から動作が変更されています。従来はコンテキストが指定されなければ「現在のドキュメント」を既定のコンテキストとして扱っていましたが、jQuery3.0からは別の新たなドキュメントとしています。

書式

$.extend([スィッチ], 対象オブジェクト,[オブジェクト1],[オブジェクト2]処理・・・)
$.noop()
$.globalEval(コード)
$.parseHTML(データ,[コンテキスト],[スィッチ])
$.extend(obj1, obj2, obj3)
$.noop()
$.globalEval("var arg = 'hello';")
$.parseHTML(html)

サンプル

オブジェクトをマージする

<script>
      $(document).ready(function(){
        var o1 ={
          name: '山田太郎',
          body: {weight: 52, height: 160},
          gender: '男'
        }
        var o2 ={
          body: {weight: 80},
          gender: '女'
        }
        $.extend(true, o1, o2);
        alert(o1.name + ' ' + o1.gender + ' ' + o1.body.weight + ' ' +o1.body.height)
      });
    </script>
実行結果
実行結果