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

评论

  • 匿名