两种方式实现浅拷贝 for in实现和Object.assign({}, 对象1, 对象2);
对象 实现 方式 for in object 两种 拷贝
2023-09-27 14:22:21 时间
浅拷贝只拷贝对象的一层,如果对象的属性还是对象,那么user3和user4这两个对象对应的值都会发生改变
// 拷贝分为浅拷贝和深拷贝。 // 浅拷贝的实现 通过for in实现 var user1 = { name: "小明", age: 30, height: 1.9 }; var user2 = {}; for (var i in user1) { user2[i] = user1[i]; //user[i]输出的是每一个值,将user1的每一个值赋予给user2对象 } console.log(user2) //{name: "小明", age: 30, height: 1.9} // 浅拷贝 通过Object.assign({}, 对象1, 对象2); // 这一种浅拷贝方式类似于jquery的$.extend({}, 对象1, 对象2) var obj1 = { name: "小明", age: 13 }; var obj2 = { name: "大王", tel: 18456888 }; var obj = Object.assign({}, obj1, obj2); console.log(obj) //{name: "大王", age: 13, tel: 18456888} // 我们发现这一种方式,相同的key值后一个会覆盖前一个的key值, //浅拷贝只拷贝对象的一层,如果对象的属性还是对象,那么user3和user4这两个对象对应的值都会发生改变 var user3={name:"小明",age:18, deMent:{bumen:"市场部",no:"001"}} var user4={}; for(var i in user3){ user4[i]=user3[i]; } user4.age=80; //这个值 不会互相影响改变 user4.deMent.bumen="策划部"; //这个值 会互相影响改变 console.log(user3); //输出 {name: "小明", age: 18,deMent:{bumen: "策划部", no: "001"} } console.log(user4); //{name: "小明", age: 80,deMent: {bumen: "策划部", no: "001"}}
相关文章
- 领域对象映射到微服务代码模型
- 【C++】类和对象--类的6个默认成员函数
- STL中list中push_back(对象)保存对象的内部实现
- java8 使用lamda表达式实现对象set方法的链式操作
- 【Git之旅】2.Git对象
- 用JAVA编写浏览器内核之实现javascript的document对象与内置方法
- Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取
- js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
- v-model绑定一个对象,组件内部分别负责不同字段的场景实现
- Java对象序列化底层原理源码解析
- js 日期对象 31 号 setMonth 的锅
- 使用 JavaScript 中的 document 对象查找 HTML 元素,实现“登录”按钮的高亮特效 鼠标悬浮于“登录”按钮时,按钮高亮显示;
- vue路由信息对象
- JSON.parse(JSON.stringify()) 实现对对象的深拷贝
- json对象定义格式(对象+数组)
- JSP中使用response对象实现定时跳转网页
- JSP中request对象的简单实用,实现简单的注册以及个人信息的展示
- js--对象默认属性
- 【android-tips】如何在view中取得activity对象
- vue3:组件通过绑定对象来绑定属性
- JavaScript中通过arguments对象实现对象的重载
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
- C#对象的浅拷贝,深拷贝及利用序列化等多种方式实现深拷贝
- rac11g错误:远程连接报错:ORA-12545: 因目标主机或对象不存在, 连接失败
- JavaScript 复制对象【Object.assign方法无法实现深复制】
- Linux平台用C++实现事件对象,同步线程
- 图解 Google V8 # 06:原型链:V8是如何实现对象继承的?
- lua OOP实现对象的链式调用
- 使用JavaScript闭包,以工厂模式实现定时器对象
- easyUIDataGrid对象返回值
- 使用Lock对象实现同步效果
- Spring Boot中Controller接收对象列表实现
- Array对象的方法实现(2)----Array.prototype.every和Array.prototype.fill(实现常规参数的功能)
- 对象的深拷贝与浅拷贝
- 在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
- [unity3d]如何实现游戏对象跟随鼠标方向移动
- Request和Response对象
- 【并发编程006】一个线程如何才能获取到对象的监视器锁呢?
- 【SSH系列】-- Hibernate持久化对象的三种状态