美文网首页
对象深度克隆

对象深度克隆

作者: O8 | 来源:发表于2017-07-10 18:15 被阅读0次

是否遇到过这样的事情

let obj = {
name: 'test',
age: 1
}
_obj.age = 2
console.log(obj.age) // 2
console.log(_obj.age) // 2

因为javascript的内存机制导致我们在克隆对象的是浅克隆,相当于我们只是复制了指针。其实他们指向的原地址是一样的。

深度克隆

let obj = {
        name: 'test',
        age: 1
      }
function cloneObj(obj) {
        let newObj = obj.constructor === Array ? [] : {}
        if (typeof obj !== 'object') {
          return
        } else {
          let str = JSON.stringify(obj)
          newObj = JSON.parse(str)
        }
        return newObj
    }
      const _obj = this.clone(obj)
      _obj.age = 2
      console.log(obj.age) // 1
      console.log(_obj.age) // 2
function clone(obj) {
        let newObj = obj.constructor === Array ? [] : {}
        for (let key in obj) {
          newObj[key] = obj[key]
        }
        return newObj
      }
let a = {
        name: 'a',
        age: 11
      }
      let b = Object.assign({}, a)
      b.name = 'b'
      console.log(a.name) // a
      console.log(b.name) // b

要下班了,写到这里了!

相关文章

  • JS实现深度克隆

    一、概念 深度克隆:深度克隆的新对象可以完全脱离原对象,我们对新对象的修改不会反映到原对象中 二、知识点储备: 1...

  • 深度克隆对象

    克隆的概念 浅度克隆:原始类型为值传递,对象类型仍为引用传递。 深度克隆:所有元素或属性均完全复制,与原对象完全脱...

  • 对象深度克隆

    是否遇到过这样的事情 let obj = {name: 'test',age: 1}_obj.age = 2con...

  • 原型模式

    定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象克隆(浅度克隆:拷贝值类型或者引用,深度克隆:...

  • 浅克隆与深克隆

    克隆的概念 浅度克隆:原始类型为值传递,对象类型仍为引用传递。深度克隆:所有元素或属性均完全复制,与原对象完全脱离...

  • js对象的克隆

    在工作中对对象的克隆在所难免,现在就总结一下克隆对象的方法。 浅克隆 深度克隆 其实除了以上的方法,还有一种非常简...

  • js对象深度克隆

    通用克隆方法 第一种方法简单粗暴,先将对象序列化再解析回来,不过要注意对象中如果有函数function则不能正确复...

  • 对象的深度克隆

    1、数据类型:* 数据分为基本的数据类型(String, Number, boolean, Null, Undef...

  • 对象的深度克隆

    首先了解js的数据类型。可以分为原始数据类型和对象类型数据。 原始数据类型指的是number、string、boo...

  • 深度克隆对象,自定义事件

    1. 深度克隆 1.1 一般对象的浅克隆 因为对象是引用类型,因此直接进行赋值赋给的是指向地址,所以使用克隆(拷贝...

网友评论

      本文标题:对象深度克隆

      本文链接:https://www.haomeiwen.com/subject/ydduhxtx.html