2013-06-27 37 views
0

我是jQuery的新手,我想了解jQuery中的$ .extend()函數。

任何人都可以請解釋以下陳述之間的區別嗎?

$.extend(true,ob1,ob2); 

$.extend(true,{},ob1,ob2); 

$.extend(true,ob1,{},ob2); 

$.extend(true,ob1,ob2,{}); 

感謝,

阿南德

+0

看到這裏http://api.jquery.com/jQuery.extend/ – PSR

回答

3

,最好有樣品

var firstObject = { 
    "hello": "jonkers", 
}; 
var secondObject = { 
    "stradivarius": "bonkers" 
}; 
console.log(firstObject); 
>> Object {hello: "jonkers"} 
$.extend(firstObject, secondObject); 
console.log(firstObject); 
>> Object {hello: "jonkers", stradivarius: "bonkers"} 

但到底是什麼的true部分的意思解釋呢?這是一個布爾值,告訴$.extend函數深拷貝應該發生。

一個深層複製,你說!

當涉及適用於多種語言的對象時,有兩種不同類型的「複製」,而不僅僅是JavaScript,這是shallowdeep。 淺拷貝是當你只需要引用該對象(和它包含的所有內容),並使重複導致copy_object中更改的值反映在original_object中。 深拷貝是一個實際的品牌打屁股新對象,你可以操縱三種方式到星期日,而不影響original_object

你想知道的最後一個例子是完全相同的調用,除了需要多個對象放入第一個對象。 因此API調用將是

$.extend(true, firstObject, secondObject, third, fourth, n-objects); 

閱讀更瞭解這是可以做到

http://api.jquery.com/jQuery.extend/

http://blog.imaginea.com/deep-copy-in-javascript/

+0

感謝您的快速響應 – Anandaraj

2

讓我們開始與extend函數的定義:)

When two or more object arguments are supplied to $ .extend(, properties from all of the objects are added to the target object. Arguments that are null or undefined are ignored.

現在讓我們看看你的例子代碼:

1. $.extend(true,ob1,ob2); 

目標是ob1,這個將添加ob2參數到它的參數。

2. $.extend(true,{},ob1,ob2); 

目標是一個新對象(用{}定義)。這個新對象將具有來自兩個對象(ob1和ob2)的參數。

3. $.extend(true,ob1,{},ob2); 

目標是ob1,它會添加來自一個新對象(它不會生成sence)和對象ob2的參數。 它是否適用於新的對象參數?

4. $.extend(true,ob1,ob2,{}); 

目標是OB1,它將從對象OB2,並從一個新的對象添加的參數(它沒有任何SENCE)。 它是否適用於新的對象參數?

+0

感謝您的解釋 – Anandaraj

相關問題