发布时间: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: '男'
};

让B等于,将A进行JSON.stringify操作后得到的值,再进行JSON.parse操作所得到的结果 。
B.age = 22;
console.log(A, B);
变量A是这样的,它有着名为jack的名称,存有年龄为18岁的数值,还有表示男性的性别属性,以类似这样的形式存在,即{name: 'jack', age: 18, sex:'男'} 。
变量 B 是这样一个玩意儿,名字有着像叫做 jeck 的模样,年龄呢处于二十二的状况,性别呈现出男性的那种情况 。
存在着诸多深拷贝方式,这不过是最为简易且常用的其中一种,要是变量里含有函数或者别的某些类型,这种方法便无法使用;。
你们一般都用什么方法?
如果有更好的方法,欢迎指点一二;
一起学习共同进步,你就是未来的大佬;
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码