• 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);

  • 相关阅读:
    URL
    B/S架构
    SQL查询语句
    SQL-Delete语句
    SQL运算符
    SQL结构查询语言
    SQL数据库数据类型详解
    标准文档流
    CSS
    字体样式
  • 原文地址:https://www.cnblogs.com/linsu/p/3731504.html
Copyright © 2020-2023  润新知