jQuery的方法extend在扩展数组、对象方面有了不起的作用。
1. 数组extend
- arr2的长度小于arr1
var arr1=[1,2,3];
var arr2=[4,5,423,423];
$.extend(arr1,arr2)
//返回值为[4,5,3],同时改变arr1
数组arr1拼接arr2的时候,在对应的索引位置,arr1的值替换为arr2对应索引值,上面代码可以等价于arr1[0]=arr2[0],arr[1]=arr[1];
- arr2的长度大于arr1
var arr1=[1,2,3];
var arr2=[4,5,53,534534,534534];
$.extend(arr1,arr2)
//返回值为[4, 5, 53, 534534, 534534],同时改变arr1
当arr2的长度大于arr1的时候,超过arr1索引位置的值继续以arr2相应索引值补充,相当于arr1=arr2;
- 数组中有空值
var arr2=[1,2,3,'',];
var arr1=[4,5,53,534534,534534];
$.extend(arr1,arr2)
//arr1存在空值与空字符串,返回值为[4, 5, 53, 534534, 534534],同时改变arr1
var arr1=[1,2,3];
var arr2=[4,,53,534534,534534];
$.extend(arr1,arr2)
//返回值[4, 2, 53, 534534, 534534],arr2的空位符不能替代arr1中相应的索引值,但是位置依然保留
var arr1=[1,2,3];
var arr2=[4,,,,53,534534,534534];
$.extend(arr1,arr2)
//返回值[4, 2, 3, undefined , 53, 534534, 534534],超出的空位符在arr1与arr2都没有赋值
- arr2为字面量数组
var arr1=[1,2,3]
$.extend(arr1,['fsa'])
//结果为['fsa', 2, 3],同等位置进行覆盖
2. 对象extend
- obj1与obj2没有共同属性
var obj1={a:1,b:2,c:3};
var obj2={d:4};
$.extend(obj1,obj2);
//返回值{a: 1, b: 2, c: 3, d: 4},追加obj2中的异样属性,obj1值改变为返回值,obj2依然不变
- obj1与obj2有共同属性
var obj1={a:1,b:2,c:3};
var obj2={d:4,b:'你好'};
$.extend(obj1,obj2);
//返回值{a: 1, b: "你好", c: 3, d: 4},属性相同的返回obj2的属性值
- obj1与obj2有空字符串
var obj1={a:1,b:2,c:3};
var obj2={d:4,b:''};
$.extend(obj1,obj2);
//返回值{a: 1, b: "", c: 3, d: 4},只要有同样属性,即使为空,返回值依然以obj2的为标准
3. 数组与对象extend
- 数组拼接对象
var arr=[1,2,3];
var obj={a:4};
$.extend(arr,obj)
//结果为[1,2,3],拼接对象的数组并没有变化
- 对象拼接数组
var arr=[1,2,3];
var obj={a:4};
$.extend(obj,arr)
//结果为{0: 1, 1: 2, 2: 3, a: 4},拼接数组的对象,会从0开始自动添加索引作为属性名,其属性值则为数组相应的索引值
- 对象拼接数组(数组有空值)
var arr=[1,2,3,,''];
var obj={a:4};
$.extend(obj,arr)
//结果为{0: 1, 1: 2, 2: 3, 4: "", a: 4}空值位置进行空出,不占位,空字符占位,值保持不变