function type(obj){ return Object.prototype.toString.call(obj).slice(8,-1); } function deepCopy(target,cloneObj){ var copy; for(var i in cloneObj){ //1.i: a //8.i:undefined结束循环 copy = cloneObj[i];//2.i:a copy:{c:'c'} //4.i:c 'c' if(target === copy){/…
赋值 python跟java中的变量本质是不一样的,Python的变量实质上是一个指针(int型或str型),而java的变量是一个可操作的存储空间. a = 123b = a print(id(a))print(id(b)) print(a is b) result: 26848576 26848576 True 这里可以看到a和b的地址是一样的,a=123,实质上是将a这个对象"贴到"123上:同样,b=a,也是将b这个对象“贴到”123上,这里变量实际上是个“便利贴“. 下面用一…
javascript对象深拷贝,浅拷贝 ,支持数组 经常看到讨论c#深拷贝,浅拷贝的博客,最近js写的比较多, 所以也来玩玩js的对象拷贝. 下面是维基百科对深浅拷贝的解释: 浅拷贝 One method of copying an object is the shallow copy. In the process of shallow copying A, B will copy all of A's field values. If the field value is a memory…
先来普及一下深拷贝和浅拷贝的区别浅拷贝:就是简单的复制,用等号即可完成 let a = {a: 1} let b = a 这就完成了一个浅拷贝但是当修改对象b的时候,我们发现对象a的值也被改变了 b.a = 10 console.log(a.a) => 10 这是因为浅拷贝只复制了指向对象的指针,新旧对象共用同一块内存,修改某一个对象的同时也会把另一个都一并修改了 深拷贝:跟浅拷贝最简单明了的区别就是修改拷贝的对象,不会改变源对象利用Object.assign可以对只有一层的对象实现深拷贝,如下…