首先,我们要知道,javascript中除了基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说就是js对象了. 引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响. 在探讨到深度克隆之前,我们先来看一下下面的例子: example01: var a = [1,2,3]; var b = a; // a b共用一个引用 b.push(4); alert(b); // [1,2,3,4]
晒下我的比较浅显的深拷贝,没有考虑原型和循环引用,可以拷贝一些js原生类型,用于面试用. function deepClone(obj){ if(Object.prototype.toString.call(obj)==="[object Function]"){ let str=obj.toString(); /^function\s*\w*\s*\(\s*\)\s*\{(.*)/.test(str); let str1=RegExp.$1.slice(0,-1); return n