"2019-01-10 回答 使用扩展运算符 ... 可将对象自身的枚举属性复制到新对象中。但这只能进行浅拷贝,如: const obj = { a: 1, b: 2 } const shallowClone = { ...obj } 使用这种技术将会忽略原型链。此外,嵌套对象并不会被克隆,只是复制了他们的引用,因此浅拷 .."

如何克隆一个 JavaScript 对象?

2019-01-10

回答

使用扩展运算符 ... 可将对象自身的枚举属性复制到新对象中。但这只能进行浅拷贝,如:

const obj = { a: 1, b: 2 }
const shallowClone = { ...obj } 

使用这种技术将会忽略原型链。此外,嵌套对象并不会被克隆,只是复制了他们的引用,因此浅拷贝后嵌套对象和原始对象仍然指向同一个对象。

加分回答

返回总目录

每天 30 秒

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:PipeSoloSymWide 等,欢迎大家加入,贡献开源。

    2094 引用 • 3641 回帖 • 619 关注
  • 30Seconds

    精选的常见前端问题集,帮助您踏踏实实走好每一步。

    英文原文请看 30-seconds

    197 引用 • 204 回帖 • 5 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    409 引用 • 987 回帖 • 971 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    210 引用 • 1145 回帖 • 431 关注
8 回帖   
请输入回帖内容...
  • Eddie

    如何用 javascript 语言实现继承关系?

    1 回复
  • Vanessa        

    class Parent {
        constructor(name) {
            this.name = name;
        }
    }
    
    class Child extends Parent {
        constructor(name, age) {
            super(name); // 调用父类的 constructor(name)
            this.age = age;
        }
    }
    
    console.log(new Child('kevin', '18')) // Child {name: "kevin", age: "18"}
    

    1 回复
  • Eddie      

    不许用 ES6 的语法!!!!!

    1 回复
  • Vanessa        

    function Parent(name) {
      this.name = name;
    };
    function Child(name, age) {
      Parent.call(this, name, age);
      this.age = age;
    }
    
    console.log(new Child('kevin', '18')) // Child {name: "kevin", age: "18"}
    

    1 回复
  • wuhongxu  

    再来一波用原型链的😒

    1 回复
  • Vanessa        

    function Parent (name) {
      this.name = name;
    }
    function Child(age){ 
        this.age = age
    }
    Child.prototype = new Parent('kevin');
    const child = new Child(18);
    console.log(child.age, child.name) // 18 "kevin"
    

  • Eddie      

    我用 typescript 看编译后的继承关系的代码,有点复杂

  • wuhongxu  

    js 不太适合也不太需要面向对象的语法啦,就函数式走下去其实也挺不错的,不必强求面向对象的感觉

请输入回帖内容 ...