首页 > 专栏 > 前端 > 文章详情
js中 4种浅拷贝方式 发布于:2023-07-03 15:14:14   原创发表   查看:43  讨论:0
首先深拷贝,浅拷贝,都是基于指 引用类型的变量 在 堆内存 中的占用空间情况。k1i【易塔云】自习室
k1i【易塔云】自习室
一、在栈内存中保存字符串,数字,布尔以及指向堆内存的变量地址等固定的值。k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
让另个一变量d 等于 a,相当于在栈内存中开辟了一个新空间。k1i【易塔云】自习室
栈中a和d已经是两个互不相干的变量,修改不影响对方。k1i【易塔云】自习室
k1i【易塔云】自习室
二、在堆内存中保存函数、数组、对象,这些是不固定的值。k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
令d等于a,只会在栈内存中存入一个相同的地址(指向a指向的堆内存地址)。k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
此时改变d的值,a的值也会改变。k1i【易塔云】自习室
浅拷贝仅仅只是拷贝了a在栈内存的堆地址,仍然和a共用一个堆内存。k1i【易塔云】自习室
k1i【易塔云】自习室
三、浅拷贝的几种方式:k1i【易塔云】自习室
k1i【易塔云】自习室
①、Object.assign(target, ...source)k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
Object.assign() 只复制属性值。k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
k1i【易塔云】自习室
②、扩展运算符 ...k1i【易塔云】自习室
③、arr.slice()k1i【易塔云】自习室
④、arr.concat()

发表评论

  • 匿名
还没有注册?