你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

sublime text格式化js JS对象深拷贝详解:JSON.stringify()与JSON.parse()的完美结合,彻底解决属性联动问题

发布时间:2025-11-13

浏览次数:0

在 JS 里赋值对象之际是浅拷贝,那要是将变量 A 的值赋给变量 B,接着去改动 B 变量里的属性的值,变量 A 的属性值同样会被更改,这是由于此对象是存于堆中的,变量 A 仅是把自身指向堆中对象地址的那个赋值给了变量 B,故而改变 B 时对应的 A 也会跟着改变;。

那么,我们平常一般习惯运用的处理办法便是采用JSON里的两个办法来处理,。

1、首先运用JSON.()去把对象进行系列化,当处理完毕之后对象就转变为了类型,处理完成的数据是独立的sublime text格式化js,此时变成了类型sublime text格式化js,鉴于Sting类型是留存于栈中的,再度进行赋值便是深拷贝,也就是把原本的对象复制出一份,和堆当中的对象不存在任何关联了;。

2、此时此刻,运用JSON.parse()来把对象解析成对象类型,接着将其赋值给新的变量 , 。

是以这样的方式,把变量A之内存储的值,赋予变量B,此后无论怎样去改变变量B,都不会对变量A产生影响;。

 let A = {
                name: 'jack',
                age: 18,
                sex: '男'
            };

sublime text格式化js_JS浅拷贝深拷贝_JSON.stringify深拷贝

让B等于,将A进行JSON.stringify操作后得到的值,再进行JSON.parse操作所得到的结果 。 B.age = 22; console.log(A, B); 变量A是这样的,它有着名为jack的名称,存有年龄为18岁的数值,还有表示男性的性别属性,以类似这样的形式存在,即{name: 'jack', age: 18, sex:'男'} 。 变量 B 是这样一个玩意儿,名字有着像叫做 jeck 的模样,年龄呢处于二十二的状况,性别呈现出男性的那种情况 。

存在着诸多深拷贝方式,这不过是最为简易且常用的其中一种,要是变量里含有函数或者别的某些类型,这种方法便无法使用;。

你们一般都用什么方法?

如果有更好的方法,欢迎指点一二;

一起学习共同进步,你就是未来的大佬;

如有侵权请联系删除!

13262879759

微信二维码