浅拷贝 (只能拷贝一层对象) 方法一:object.assign let target = {}; let source = { a: { b: 1 } }; Object.assign(target, source); console.log(target); // { a: { b: 1 } };使用 object.assign 方法有几点需要注意: 它不会拷贝对象的继承属性;它不会拷贝对象的不可枚举的属性;可以拷贝 Symbol 类型的属性。 方法二:扩展运算符方式 /* 对象的拷贝 */ let obj = {a:1,b:{c:1}} let obj2 = {...obj} obj.a = 2 console.log(o...
深浅拷贝通常是对于引用数据类型进行的(数据类型为:对象(Object)、数组(Array)、函数(Function)) 浅拷贝:let obj = {id: 1, name: 2}; let newObj = obj;setTimeout(() => {newObj.id = 2;console.log(obj,newObj) },1000);// 输出如下 // { id: 2, name: 2 } { id: 2, name: 2 }我们发现,随着newObj的变化,obj也随之变化,这明显不是我们想要的,数组也同样如此,那么就需要进行深拷贝了。 深拷贝: 方法1(封装函数)// 构...
深浅拷贝知识在我们的日常开发中还算是用的比较多,但是之前的状态一直都是只曾听闻,未曾使用(其实用了只是自己没有意识到),所以今天来跟大家聊一聊js的深浅拷贝;首先我们来了解一下javascript的数据类型,在ES5版本的js中我们的javascript一共有6种数据类型,分别是:Number(数值型)、String(字符串)、Boolean(布尔型)、Object(对象,object和array都属于Object类型)、null、undefined我们日常使用的javascript深浅拷...
最近遇到了不少深浅拷贝的问题,自己也查阅了不少资料,在这里总结一下,也希望能帮助到更多有需要的小伙伴~ 基本数据类型和引用数据类型 在JS中,分为两种数据类型。其中基本数据类型指的是简单的数据段,包括Number,String,Null,Undefined,Boolean五种。 引用数据类型指的是可能包含多个值的对象,比如Object,Array,函数等。 基本数据类型保存在栈内存,而引用类型保存在堆内存中。那再进一步问:为什么要分两种保存方式呢...
深浅拷贝: 比较关键的是: 1明白 基本类型 和引用类型 的区别? 2 会知道什么实用发生深拷贝,什么时候浅拷贝。 博客园:https://www.cnblogs.com/qlb-7/p/12957968.html 知乎:https://zhuanlan.zhihu.com/p/102409050 博客园:https://www.cnblogs.com/xfy196/p/12644455.html segment:https://segmentfault.com/a/1190000008838101 视频:python讲解深浅拷贝: https://www.bilibili.com/video/BV1jT4y1G7AN/?spm_id_from=3...
js深浅拷贝 js中分为基础类型 和引用类型(复杂类型) 基础类型赋值的时候是直接在(栈中存储) 引用类型赋值的时候赋值的是引用类型存在栈中存储的引用 1.深拷贝第一种方法 let obj = {name:'张三',age:18,}let newObj = JSON.parse(JSON.stringify(obj))console.log(obj == newObj) // false说明:obj对象建立后,通过JSON两次转换 重新在‘堆’中 新建了一块内存,存储 newObj 所以 实现了深拷贝。 let obj = {name:'张三',age:1...
// var obj1 = { // name: '李四' // } // var obj2 = obj1 // obj1.name = '张三' // console.log(obj1,obj2); // 实现 1.Object.assign() var person = {name: '张三',age: '12',relation: {farther:'张以某'} } var p1 = {} Object.assign(p1,person) console.log(p1); person.name = '李四' console.log(person.name,p1.name) //'李四' '张三' person.relation.farther = '隔壁王叔' console.log(p1.relation.farther) //...