javascript 深拷贝实现__clone

原文链接: http://www.cnblogs.com/glory-jzx/archive/2012/11/10/2763557.html

 javascript 中 object类型的元素是浅拷贝的。也就是说副本指向相同地址

<script>
var a = b = [];
    a.push('aaa');
  console.dir(b);
/*
Array[
1] 0: "aaa" length: 1 __proto__: Array[0]
*/
</script>

 实现深层拷贝

<script>
function dCopy(o){
    if(typeof(o) != 'object') return o;
    var _o = o.constructor == Array ? [] :{};
    for(var i in o){
       _o[i] = dCopy(o[i]);
    }
    return _o;
}
var people = {
   name:'humen being',
   todo:['say','walk']
}
var programer = dCopy(people);
programer.todo.push('code');
console.dir(programer);
console.dir(people);
/*
Object
  1. name"humen being"
  2. todoArray[3]
    1. 0"say"
    2. 1"walk"
    3. 2"code"
    4. length3
    5. __proto__Array[0]
  3. __proto__Object 
Object
  1. name"humen being"
  2. todoArray[2]
    1. 0"say"
    2. 1"walk"
    3. length2
    4. __proto__Array[0]
  3. __proto__Object

*/
</script>

  没啥技术含量就是迭代浅拷贝- -

转载于:https://www.cnblogs.com/glory-jzx/archive/2012/11/10/2763557.html

猜你喜欢

转载自blog.csdn.net/weixin_30511107/article/details/94800721