分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS-拷贝对象

发布时间:2023-09-06 02:28责任编辑:蔡小小关键词:暂无标签
As it is well known to us all, 拷贝对象分为浅拷贝和深拷贝,深拷贝只会复制地址,深拷贝才会复制内容,那么JS如何进行这两种拷贝呢?# 浅拷贝## Object.assign()方法[Object.assign() - JavaScript | MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)```jsvar object1 = { ?a: [1], ?b: 2, ?c: 3};var object2 = Object.assign({}, object1);console.log(object2.a);// [1]object1.a[0] = 111console.log(object2.a);// [111]```# 深拷贝## $.extend()方法[jQuery.extend() | jQuery API Documentation](https://api.jquery.com/jQuery.extend/)```jsvar jsdom = require("jsdom").JSDOM;var window = new jsdom(``).window;var $ = require(‘jquery‘)(window);var object1 = { ?a: [1], ?b: 2, ?c: 3};var object2 = $.extend(true, {}, object1);console.log(object2.a);// [1]object1.a[0] = 111console.log(object2.a);// [1]```## _.cloneDeep()方法[cloneDeep | Lodash Documentation](https://lodash.com/docs/4.17.11#cloneDeep)```jsvar _ = require("lodash");var object1 = { ?a: [1], ?b: 2, ?c: 3};var object2 = _.cloneDeep(object1);console.log(object2.a);// [1]object1.a[0] = 111console.log(object2.a);// [1]```## 注意### lodash拷贝数组,数组上的属性会丢失作者已经指出这不是bug,而是这样设计的:[clone does not copy array properties · Issue #3521 · lodash/lodash](https://github.com/lodash/lodash/issues/3521)PS:使用jquery拷贝不会这样。```jsvar jsdom = require("jsdom").JSDOM;var window = new jsdom(``).window;var $ = require(‘jquery‘)(window);var _ = require("lodash");var object1 = { ?a: [1], ?b: 2, ?c: 3};object1.a.p1 = 123;var jq_obj = $.extend(true, {}, object1);var lo_obj = _.cloneDeep(object1);console.log(jq_obj.a);// [1, p1: 123]console.log(lo_obj.a);// [1]```

JS-拷贝对象

原文地址:https://www.cnblogs.com/jffun-blog/p/10206585.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved