<script src="js/jquery-3.2.0.min.js"></script>
<script>
var obj={};
var obj1={
name: 'hunger',
sex: 'man'
};
var obj2={
name: 'valley',
age: 30
}
//$.extend(obj,obj1) //把obj1拷貝到obj上面
$.extend(obj,obj1,obj2)//屬性會(huì)覆蓋 Object {name: "valley", sex: "man", age: 30}
常見的用戶輸入數(shù)據(jù)時(shí)的設(shè)置
function getPeople(obj){
var default={
name: 'hunger',
age: 20,
sex: 'male'
}
var opts={}
$.extend(obj,default,obj)
console.log(opts);
}
目標(biāo)對(duì)象(第一個(gè)參數(shù))將被修改忆畅,并且將通過$.extend()返回。然而,如果我們想保留原對(duì)象,我們可以通過傳遞一個(gè)空對(duì)象作為目標(biāo)對(duì)象:
var object = $.extend({}, object1, object2);
function getPeople(obj){
var def={
name: 'hunger',
age: 20,
sex: 'male'
}
var opts=$.extend({},def,obj)
console.log(opts)
}
obj2={
name: 'valley',
age: 30
}
getPeople(obj2); //最后輸出Object {name: "valley", age: 30, sex: "male"}
$.extend()方法默認(rèn)是淺拷貝
我們來看一下一個(gè)例子
var obj={}
var obj1={
name: 'hunger',
sex: 'male',
friends: [1,2,3]
};
var obj2={
name: 'valley',
age: 30
}
$.extend(obj,obj1) //得到obj={ name: 'hunger',
sex: 'male',
friends: [1,2,3]}
//這個(gè)時(shí)候我們?cè)龠M(jìn)行以下操作
obj.friends[0]=100; //此時(shí)obj={name: 'hunger',
sex: 'male',
friends: [100,2,3]}
obj1.friends //輸出[100,2,3] obj1也會(huì)隨之改變 這就是淺拷貝
**要想實(shí)現(xiàn)深拷貝盔性,則需要設(shè)置布爾值,這樣寫:$.extend(true,obj,obj1)
**
當(dāng)改成這樣寫的時(shí)候呢岗,
$.extend(true,obj,obj1)
obj.friends[0]=100; //此時(shí)obj={name: 'hunger',
sex: 'male',
friends: [100,2,3]}
obj1.friends //輸出[1,2,3] obj1不會(huì)改變,實(shí)現(xiàn)淺拷貝