zoukankan      html  css  js  c++  java
  • Js 克隆

    1.浅表克隆

      调用concate() 或者slice() 方法,可以创建数组的浅表副本,在浅表副本中,如果原始数组的元素是复杂数据类型,则元素值指向对象的引用而非对象本身,

      与原始数组一样,浅表副本的元素值也是指向对象引用,对对象所做的任何更改都会在两个数组中反映出来。

    2.深度克隆

     深度克隆是相对于浅表而言的,在克隆的深度副本中,不断复制索引,还将复制原始数组中的所有对象,从而使新数组和原始数组指向不同对象。

    实现的一个方法:

    function cloneArray(_arry ,deep){
    var newArray=[];
    if(deep){
    for(var i in _arry){
    var prop =_arry[i];
    if(typeof prop =='object'){
    if(prop instanceof Array){
    newArray[i]=[];
    for(var j=0;j<prop.length;j++){
    if(typeof prop[j]!='object'){
    newArray[i].push(prop[j]);
    }
    else{
    newArray[i].push(cloneArray(prop[j]),true);
    }
    }
    }
    else{
    newArray[i]=cloneArray(prop,true);
    }
    }
    else{
    newArray[i]=prop;
    }
    }
    }
    else{
    newArray=_arry.concat();
    }
    return newArray;
    }

    测试方法:

    var p ={sex:1,ages:32};
    var a =["tomn",p];
    var newarray =cloneArray(a,false);
    alert(newarray[1].sex);
    p.sex=2;
    alert(newarray[1].sex);

  • 相关阅读:
    数据结构-链式结构-队列
    c数据结构-线性结构-队列
    栈的四则运算的运用
    C++/C—函数指针
    向显存写数据x8086
    结构体内存偏移量
    MFC-ComboBox控件的使用
    MFC的Edit text编辑框控件
    C/C++反汇编-各种表达式(加减乘)
    MFC- 学习控件-静态文本
  • 原文地址:https://www.cnblogs.com/linsu/p/3731504.html
Copyright © 2011-2022 走看看