ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery での clone() と extend() の比較と使用

jQuery での clone() と extend() の比較と使用

巴扎黑
巴扎黑オリジナル
2017-06-25 10:03:011647ブラウズ

jQueryの clone() メソッドは、

 var obj = {
    chart: {
        type: 'spline',
        inverted: true
    },
    title: {//标题文字
        text: 'Atmosphere Temperature by Altitude'
    },
   ...

};
などの

object

をカスタマイズしたときに、別のobj2をカスタマイズしてobjの内容をコピーしたいときに、

 var obj2 = obj.clone();

を使用します。そのobjを無視したことがはっきりとわかりますは単なる オブジェクト であり、 clone() メソッドはありません。したがって、これは明らかに間違ったデモンストレーションです。ただし、jQuery に付属の clone() メソッドは、今度は、あるオブジェクトを別のオブジェクトにコピーするという私のニーズを満たすことができなくなりました。 clone(obj); 浅いレベルのコピー: 非基本

データ型の場合
、クローン作成後、結果として 2 つのポインターは同じメモリ空間を指すため、一方のオブジェクトが操作されると、もう一方のオブジェクトの内容も変更されます。

ディープコピー: コピーと同様に、指定されたオブジェクトのすべての プロパティとメソッド

を、新しいオブジェクトが指すオブジェクトにコピーします。これにより、新しいオブジェクトへの変更やその他の操作が元のオブジェクトに影響を与えなくなります。 。

以下にディープコピーメソッドを示します:

var cloneObj = function(obj){
var str, newobj = obj.constructor === Array ? [] : {};
if(typeof obj !== 'object'&& typeof obj !=='function'){
    return;
}else {
    for(var i in obj){
        newobj[i] = typeof obj[i] === 'object' ?
            cloneObj(obj[i]) : obj[i];
    }
}
return newobj;
};

//克隆
var obj2=clone(obj);
内部のパラメータを変更したい場合は、次のメソッドを使用できます

obj2.title.text = "XXX";
extend():

extend() メソッドを使用します: 拡張とは、次のことができることを意味します1 つ以上のプロパティをオブジェクトに拡張して

、ユニオン効果を形成します。ここで空のオブジェクトについて話している場合、オブジェクトに拡張することはクローン作成と同等です

$.extend(true,obj,{});

ユニオン効果を取得するコードは次のとおりです

 obj2 = $.extend(true,obj,obj2);
特定のパラメータを上書きしたい場合は、clone() と同じ上書き方法を選択するか、

obj2 = $.extend(true,obj,obj2);

の前に次のコードを追加することを選択できます。 :

りー

以上がjQuery での clone() と extend() の比較と使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。