我是jQuery的新手,我想了解jQuery中的$ .extend()函數。
任何人都可以請解釋以下陳述之間的區別嗎?
$.extend(true,ob1,ob2);
$.extend(true,{},ob1,ob2);
$.extend(true,ob1,{},ob2);
$.extend(true,ob1,ob2,{});
感謝,
阿南德
我是jQuery的新手,我想了解jQuery中的$ .extend()函數。
任何人都可以請解釋以下陳述之間的區別嗎?
$.extend(true,ob1,ob2);
$.extend(true,{},ob1,ob2);
$.extend(true,ob1,{},ob2);
$.extend(true,ob1,ob2,{});
感謝,
阿南德
,最好有樣品
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,這是shallow
和deep
。 淺拷貝是當你只需要引用該對象(和它包含的所有內容),並使重複導致copy_object
中更改的值反映在original_object
中。 深拷貝是一個實際的品牌打屁股新對象,你可以操縱三種方式到星期日,而不影響original_object
。
你想知道的最後一個例子是完全相同的調用,除了需要多個對象放入第一個對象。 因此API調用將是
$.extend(true, firstObject, secondObject, third, fourth, n-objects);
閱讀更瞭解這是可以做到
感謝您的快速響應 – Anandaraj
讓我們開始與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)。 它是否適用於新的對象參數?
感謝您的解釋 – Anandaraj
看到這裏http://api.jquery.com/jQuery.extend/ – PSR