javascript拷贝对象的方法

let obj = {

      name:'zhagnsan',

      age:30,

      school:'pinghai'

    }

  object.assign

    function copy(obj){

      return Object.assign({},obj)

    }

    console.log(copy(obj))

    ...展开运算符

    function copy2(obj){

      return {...obj}

    }

    console.log(copy2(obj))

    let a = {

      age:1,

      jobs:{first:'FE'}

    }

    let b = copy(a)

    a.jobs.first = 'native'

    console.log(b.jobs.first)

    console.log(a.jobs.first)

    //浅拷贝,当对象层级大于2级时候,原来的对象属性也被改变了

   深拷贝

    function copyDeep(obj){

      return JSON.parse(JSON.stringify(obj))

    }

    console.log(copyDeep(obj))

   messageChannel

    function structuralClone(){

      return new Promise(resolve =>{

        const{port1,port2} = new MessageChannel()

        port2.onmessage = ev => resolve(ev.data)

        port1.postMessage(obj)

      })

    }

    obj2 = structuralClone(obj)

    console.log(obj2)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容