• JavaScript的深拷贝


    最近有一道面试题关于JavaScript的对象深拷贝 - 学习一下写个总结:

    平时也会遇到一个对象赋值给另一个变量时候,算不算拷贝呢,如果对象属性有 function 之类的呢,或者引用其他变量会怎么样呢?

    首先我们说一下,JavaScript的变量类型有 基本数据类型或者引用数据类型;

    总结:

    有3种方法可以实现对象的深度拷贝,但是是有条件的哦
    1、json.parse( json.stringify )
    2、object.assign
    3、递归深度拷贝(基本数据类型就赋值否则继续递归赋值)

    优缺点: 

    1 json.parse对于无法序列化的,有些会抛出异常,有些会丢失,哪些无法序列化呢:setmap functionundefinedsymbol这几种是无法序列化的;

    2 object.assign倒是完美一些,即使function还有set什么的都可以拿到,但是对于引用的,如果拷贝的对象里面有一个属性值是另一个对象,那么这一个

    属性值其实拷贝的还是引用的指针,也就是说拷贝的依然是对象的引用(对引用的拷贝);

    3 递归深度拷贝的话其实看你怎么写哈哈哈(其实就是递归校验对象属性值,如果是基本数据类型就直接赋值如果不是的话,则递归赋值);

    感谢:

    https://juejin.cn/post/6844904042322198541

    https://www.liaoxuefeng.com/wiki/1022910821149312/1023024181109440

    I can see a bigger world.
  • 相关阅读:
    代理工具介绍
    Cookie 相关
    在JavaScript 使用命名空间
    oracle rank()用法
    sql update 特殊用法
    Repeat 嵌套绑定
    .net 中隐式事务和显示事务的用法
    为站点添加迅雷下载和快车下载
    缺少MSVCR71.DLL解决方式
    关于AppFabric Caching的学习摘录
  • 原文地址:https://www.cnblogs.com/xuweiqiang/p/14735801.html
Copyright © 2020-2023  润新知