Jquery の extend メソッドのプロトタイプは次のとおりです。
1. extend(dest,src1,src2,src3...);
src1,src2,src3... を拡張することを意味します。 dest にマージされると、戻り値はマージされた dest になります。このメソッドはマージ後に dest の構造を変更することがわかります。マージされた結果を取得したいが、dest 構造を変更したくない場合は、次のように使用できます:
2. var newSrc=$.extend({},src1,src2,src3. ..)//つまり、「{}」を dest パラメータとして使用します。
このようにして、src1、src2、src3...をマージすることができ、マージ結果がnewSrcに返されます。
次の例:
var result =$.extend ({},{name:"Tom",age:21},{name:"Jerry",sex:"Boy"})
次にマージ結果
result={ name:"Jerry",age:21,sex:"Boy"}
つまり、後のパラメータが前のパラメータと同じ名前である場合、後のパラメータは前のパラメータ値を上書きします。 。
3. extend(boolean,dest,src1,src2,src3...)
最初のパラメータ boolean はディープコピーを実行するかどうかを表し、他のパラメータは前に紹介したものと同じです
例
var result=$.extend ( true, {},
{ 名前: "ジョン"、場所: {都市: "ボストン"、郡:"アメリカ"} }、
{ 最後: "Resig"、場所: {州: "MA ",county:"China"} } );
サブオブジェクトの場所: {city: "Boston"} が src1 にネストされており、サブオブジェクトの場所: { であることがわかります。 state: "MA"} も src2 にネストされています。ディープ コピー パラメーターが true の場合、マージされた結果は次のようになります:
result={name:"John",last:"Resig",location:{city:"Boston",state:"MA",county:" China"}}
また、つまり、src 内のネストされたサブオブジェクトもマージします。最初のパラメーター boolean が false の場合、マージの結果がどうなるかを見てみましょう。
var result=$.extend( false, {},
{ 名前: "ジョン"、場所:{ 都市: "ボストン"、郡:"アメリカ"} }、
{ 最後: "Resig"、場所: {州: "MA" ,county:"中国"} } );
結合された結果は次のようになります:
result={name :"John",last:"Resig",location:{state:"MA",county:"China"}}