• 技术文章 >web前端 >js教程

    javascript克隆对象深度介绍_基础知识

    2016-05-16 17:48:01原创531
    js一般有两种不同数据类型的值:
      基本类型(包括undefined,Null,boolean,String,Number),按值传递;
      引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内存中的地址。
    克隆或者拷贝分为2种:
      浅度克隆:基本类型为值传递,对象仍为引用传递。
      深度克隆:所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。
    复制代码 代码如下:

    function cloneObject(obj){
    var o = obj.constructor === Array ? [] : {};
    for(var i in obj){
    if(obj.hasOwnProperty(i)){
    o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i];
    }
    }
    return o;
    }

    另:如果是一个简单的数组,元素中没有引用类型的值,可以直接用array.concat();或者array.slice(0);来深度拷贝一个数组,这样简单又高效。数组的concat()和slice()本来就会生成一个新的数组,原来的数组不会受影响。但是要注意的是你要确保被拷贝的数组中元素中没有引用类型的值。
    这是另一种深度克隆的方法,很简单,很实用:
    复制代码 代码如下:

    var s = JSON.stringify( obj );
    var o = JSON.parse( s );
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:js 深度克隆
    上一篇:jquery div 居中技巧应用介绍_jquery 下一篇:中国地区三级联动下拉菜单效果分析_javascript技巧
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 聊聊Node.js中的进程、线程、协程与并发模型• JavaScript知识点总结之DOM• JavaScript怎么处理树状结构数据的增删改查• 一文了解Node中的文件模块和核心模块• 浅显易懂的JavaScript引入
    1/1

    PHP中文网