Skip to content

前言: 在[学习 JavaScript 基础篇]提到深度克隆与浅度克隆,最近在云栖社区看到有另一种深度克隆写法,因此记下笔记。

实现思路:

  • 利用 ES6 的数组原方法 Array.isArray 判断数据类型。

  • 如果是引用数据类型循环递归判断,否则输出。

代码片段:

function deepClone(origin){
		var newObj = (Array.isArray(origin)) ? [] : {};

		for(var key in origin){
			newObj[key] = (typeof origin[key] == 'object')
			? deepClone2(origin[key])
			: origin[key];
		}
		return newObj;
	}
function deepClone(origin){
		var newObj = (Array.isArray(origin)) ? [] : {};

		for(var key in origin){
			newObj[key] = (typeof origin[key] == 'object')
			? deepClone2(origin[key])
			: origin[key];
		}
		return newObj;
	}