基本类型:就是值类型,即在变量所对应的内存区域存储的是值(直接存储在栈(stack)中的数据)
引用类型:就是地址类型(存储的是该对象在栈中引用,真实的数据存放在堆内存里)
深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象
lodash.js:降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。非常适用于:遍历 array、object 和 string;对值进行操作和检测;创建符合功能的函数
常用拷贝:
_.clone(value):浅拷贝。浅拷贝只是对指针的拷贝,拷贝后两个指针指向同一个内存空间。
_.cloneDeep(value):深拷贝。深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。
_.defaults(object, [sources]):只对比第一层。给对象添加字段,保持原来字段的值。
_.defaults({‘a’:1},{‘b’:1},{‘a’:3}) ========>{‘a’:1,’b’:2}
_.defaultsDeep(object, [sources]):递归对比到最里层。给对象添加字段,保持原来字段的值。
_.defaultsDeep({‘a’:{‘b’:1}},{‘a’:{‘b’:1,’c’:3}}) ========>{‘a’:{‘b’:1,’c’:3}}
原生Object.assign无法实现深拷贝
Object.assign:合并多个JavaScript对象(第一个参数是目标对象,后面的都是源对象,assign方法将多个原对象的属性和方法都合并到了目标对象上面,如果在这个过程中出现同名的属性(方法),后合并的属性(方法)会覆盖之前的同名属性(方法)。)
本文来自 余 倩倩 投稿,不代表 PmTemple 立场,如若转载,请注明出处:
。如有涉及侵权行为,请发送相关证明材料至邮箱admin@pmtemple.com