1.通用对象克隆:
function clone(obj){ let temp = null; if(obj instanceof Array){ temp = obj.concat(); }else if(obj instanceof Function){ //函数是共享的是无所谓的,js也没有什么办法可以在定义后再修改函数内容 temp = obj; }else{ temp = new Object(); for(let item in obj){ let val = obj[item]; temp[item] = typeof val == 'object'?clone(val):val; //这里也没有判断是否为函数,因为对于函数,我们将它和一般值一样处理 } } return temp; }
整个clone函数的思路可能有点乱,但是可以这样理顺:
把obj的value当做只有普通值、数组和函数,先按部就班地处理,然后再考虑之前的“普通值”有可能是object,所以这里做个判断,在递归一下clone函数就可以了
换用toSting()方法克隆&