对象的深拷贝与比较

56 阅读1分钟
  1. 对象之间如何进行深拷贝
    this.dataList = JSON.parse(JSON.stringify(this.dataForm));
    dataForm和dataList是两个对象,如果直接赋值,那么就会进行浅拷贝。两个对象指向同一个存储地址,两个对象任意一个发生改变都会影响另一个。
    我们可以把被复制的对象进行JSON.stringify()转换成字符串,然后再采用JSON.parse()把字符串转换为js对象再进行赋值,这样进行的是深拷贝,复制的对象和被复制的对象都会拥有自己的存储地址。这样两个对象的内容发生改变时不会相互影响。便于进行对象的比较。\
  2. 对象之间进行比较 \ this.dataList === this.dataForm
    直接比较,比较的是两个对象的引用,即跟存储地址有关。
    如果我们要比较两个对象的属性和内容的话,不能这样进行比较。
    我们可以把两个对象都进行字符串化再进行比较。
    JSON.stringify(this.dataForm) === JSON.stringify(this.dataList)