JavaScript 中可以使用 Object.assign() 方法或通过遍历赋值的方法合并对象, 也可以通过调用 jQuery 中的 $.extend() 函数来合并对象.
1,Object.assign()
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象. 它将返回目标对象
语法:
Object.assign(target, ...sources)
参数: target 目标对象. sources 源对象.
返回值: 目标对象.
描述: 如果目标对象中的属性具有相同的键, 则属性将被源中的属性覆盖. 后来的源的属性将类似地覆盖早先的属性.
实例:
- Object.assign(target, ...sources)
- //a. 复制一个对象 < br>var obj = {
- a: 1 ,b:2
- };
- var copyObj = Object.assign({
- }, obj);
- console.log(copyObj); // {
- a: 1,b:2
- }<br><br>//b. 合并多个对象
- var o1 = {
- a: 1
- };
- var o2 = {
- b: 2
- };
- var o3 = {
- c: 3
- };
- var obj = Object.assign(o1, o2, o3);
- console.log(obj); // {
- a: 1, b: 2, c: 3
- }
- console.log(o1); // {
- a: 1, b: 2, c: 3
- }, 且目标对象自身也会改变.
2, 遍历赋值
- var obj1={'a':1};
- var obj2={'b':2,'c':3};
- for(var key in obj2){
- if(obj2.hasOwnProperty(key)===true){ <br> // 此处 hasOwnProperty 是判断自有属性,
使用 for in 循环遍历对象的属性时, 原型链上的所有属性都将被访问会避免原型对象扩展带来的干扰
- obj1[key]=obj2[key];
- }
- }
- console.log(obj1);//{
- 'a':1,'b':2,'c':3
- };
- 3, $.extend()
jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象.
注意:
1, 如果只为 $.extend() 指定了一个参数, 则意味着参数 target 被省略. 此时, target 就是 jQuery 对象本身. 通过这种方式, 我们可以为全局对象 jQuery 添加新的函数.
2, 如果多个对象具有相同的属性, 则后者会覆盖前者的属性值.
实例:
- var obj1= {
- 'a': 1
- };
- var obj2= {
- 'b': 1
- };
- var c = $.extend(obj1, obj2);
- console.log(obj1); // {
- a: 1, b: 1
- } obj1 已被修改
- // 或者 <br>var obj3 = $.extend({
- }, obj1, obj2) <br>console.log(obj3); //{
- a: 1, b: 1
- } 不会改变 obj1,obj2
来源: http://www.css88.com/qa/javascript/11372.html