1.合并复制对象
var x = { name:”test” };
var y = { age: 18 };
var z = { site: “www.baidu.com” };
// y和z的属性将被合并复制到对象x上
var obj = $.extend( x, y, z );
然后 obj的值
Object {name: “test”, age: 18, site: “www.baidu.com”}
2.如果多个被合并对象有相同的属性,则后者会覆盖之前的属性。
var item = [{
"text": "1.地址选择"
}, {
"text": "2.业务选择"
},{
"text": "3.业务办理"
},{
"text": "4.确认支付"
},{
"text": "5.竣工配送"
}];
var options={
"item": item,
step: 1,
visited: true,
afterStep:function(stepObj){
var stepVal=stepObj.getStep();
$("#JS_STEP_"+stepVal).show().siblings().hide();
}
};
var obj = $.extend({}, {
width: 750,//宽度
height: 28,//高度
item: '',//步骤集合
visited: false,
afterStep: (function() {})
}, options);
obj的值
obj {width: 750, height: 28, item: Array[5], visited: true, step: 1}
可以看出因为在options中的属性覆盖了前者的属性
var x = { name:”CodePlayer”, map:{ a: 1, b: 1 } };
var y = { map: { b: 2, c: 2 } };
// 后者的map属性直接覆盖前者的map属性
var obj = $.extend( x, y );
但是如果是这样则不是简单的覆盖
x = { name:”CodePlayer”, map:{ a: 1, b: 1 } };
y = { map: { b: 2, c: 2 } };
// 两者的map属性都是对象,则合并map对象的属性。
obj = $.extend( true, x, y );
这样 obj 中的集合就是 a=1 b=2 c=2
在使用$.extend 有三种情况
一是有dest参数 var newSrc=$.extend({},src1,src2,src3...)//也就是将"{}"作为dest参数; 例如这种
二 只有一个src 则只用$.extend(src)
三 extend(boolean,dest,src1,src2,src3...)第一个参数boolean代表是否进行深度拷贝 就是如上obj = $.extend( true, x, y );