首页 > 编程语言 > 详细

Javascript实现对象的深度合并

时间:2019-07-30 18:12:41      阅读:118      评论:0      收藏:0      [点我收藏+]
function extend() {
var extended = {};
var deep = false;
var i = 0;

// 判断是否为深拷贝
if (Object.prototype.toString.call(arguments[0]) === ‘[object Boolean]‘) {
deep = arguments[0];
i++;//如果为深拷贝则初始的i为1或者为0
}

// 将对象属性合并到已存在的对象中
var merge = function(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// 如果属性为对象并且需要深拷贝时则使用函数递归、反之则将当前的属性替换现有的属性
if (deep && Object.prototype.toString.call(obj[prop]) === ‘[object Object]‘) {
  extended[prop] = extend(extended[prop], obj[prop]);
} else {
  extended[prop] = obj[prop];
}
  }
  }
};

// 遍历所有对象属性
for (; i < arguments.length; i++) {
  merge(arguments[i]);
}

return extended;

}
 
示例:
  1、extend({a:1,b:2,c:3},{a:2,d:5})简单拷贝
  2、extend(true,{a:1,b:2,c:3},{a:2,d:5,b:{a:123}})简单拷贝

Javascript实现对象的深度合并

原文:https://www.cnblogs.com/john-paul/p/11271761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!