本文介绍如何在JavaScript中将一个对象的属性复制到另一个对象。通过原生JS编写mix函数,利用for-in循环和is_overwrite参数控制是否覆盖已有属性。同时展示jQuery中$.extend方法的简便用法,实现对象属性的快速合并与覆盖处理。
原生JavaScript实现对象属性合并
使用原生JavaScript实现对象属性合并:
具体实现代码如下:
/**
该函数的主要功能是将源对象s的所有属性复制到目标对象r中。
参数r为目标对象,类型为Object。
参数s为源对象,类型为Object。
参数is_overwrite为布尔值,若指定为false,则保留目标对象r中已有的属性值,不进行覆盖。
若is_overwrite为其他值(包括undefined),则源对象s中的同名属性将覆盖目标对象r中对应的值。
*/
mix函数的定义如下:function (r, s, is_overwrite) { //TODO:
首先检查源对象s和目标对象r是否存在,若任一对象为空则直接返回目标对象r。
遍历源对象s的所有属性p,判断条件:若is_overwrite不为false,或者目标对象r中不存在该属性p,则将s[p]赋值给r[p]。最后返回合并后的目标对象r。
jQuery实现对象合并
如果使用jQuery库,实现对象合并将更加便捷:
jQuery示例代码如下:
定义对象a,包含属性:
属性aa的值为1,
属性ab的值为2。
};
定义对象b,包含属性:
属性ba的值为1,
属性bb的值为2。
};
调用$.extend(a, b)将对象b的属性合并到对象a中,并通过console.info(a)输出合并后的结果。