1

jquery extendを使用する利点を理解していますが、まったく同じような2つのケースをフォローしていますか、それとも他のケースよりも優れています。その理由は何ですか。

obj1 = $.extend(true, {}, elements);

..

obj1 = elements;

更新: 回答説明:以下は混乱を解消するはずです

​obj = {"value":4};
obj_test = obj;
obj.value = 5
alert(obj_test.value);

</ p>

4

2 に答える 2

2

2番目のケースでは、オブジェクトを「コピー」せずに、オブジェクトへの2番目の参照を作成します。

したがって、最初のケースでは、それはコピーです-2つの変数に格納された2つのオブジェクト。

2番目の例では、2つの変数(コピーではない)によって参照される単一のオブジェクト。

于 2012-11-28T23:51:20.860 に答える
0

最初の方法はに使用されdeep copy an Objectます。

var elements = {
   name : 'John',
   age : 23
}

var obj1 = $.extend(true, {}, elements);
obj1.name = 'Bill';

console.log('Original : '+ elements.name);
console.log('Deep Copy : ' + obj1.name);

2番目はcopying over the referenceオブジェクトだけです。

var obj2 = elements;
console.log('Original : '+ elements.name);
console.log('Reference Copy : ' + obj2.name);

フィドルをチェック

最初のケースでは、両方のオブジェクトが異なるメモリ位置を指しています。したがって、プロパティを変更すると、変更されたオブジェクトにのみ影響します。

2番目のケースでは、両方が同じメモリ位置を指しています。したがって、1の効果は、別の効果に断続的に影響します。

于 2012-11-28T23:55:11.397 に答える