在整理前端面试问题的时候,遇到很多要求利用js实现深层克隆要求,因此特意回去翻看了资料,并将笔记和代码整理了一下。
关于深层克隆
深层克隆可以简单理解为:可以克隆第一级属性,如果某个属性又是一个内嵌的子对象,深克隆会进入子对象中,继续克隆内嵌子对象及其内容。
实现深层克隆的思路:
1、首先对需要克隆的对象进行遍历,判断里面属性值的类型
2、属性值的类型分为两种:原始值(string,number,null,undefine,boolean)和引用值(object,array)
3、如果遍历到的属性值为原始值,则直接进行拷贝
4、如果遍历到的属性值为引用值类型,则需要在目标对象的对应属性地方建立新的引用值类型,以原始引用值类型为模板,新建立的引用值为目标重复1,2,3步骤进行拷贝,从而实现深层拷贝。
下面给出代码实现过程:(附超详细注释)
function deepClone(origin,target){
var target = target || {
};
toStr = Object.prototype.toString;
arrStr = "[object.Array]";
for (var key