美文网首页
...语法与Object.assgin的区别和使用场景

...语法与Object.assgin的区别和使用场景

作者: 艾希_可可 | 来源:发表于2021-09-28 17:04 被阅读0次

...语法深拷贝

组件的...p是babel+JS语法支持
js赋值 let person2 = {...p} 是复制一份相同的数据,改原来的person数据不会影响person2,深拷贝

合并两个对象,不改变obj1的值
let obj1={
            name:'name',
            sex:'male',
            skill(){
                console.log('测试skill');
            }
        };
        let obj2={
            house:'别墅',
            do(){
                console.log('I test!!!');
            }
        };
let obj3={...obj1,...obj2};
        console.log(obj3);
截屏2021-09-11 下午6.49.49.png 截屏2021-09-11 下午6.50.32.png

Object.assign()

合并对象影响原来obj1的值会,不推荐使用
let obj3 = Object.assign(obj1,obj2)

下面这种不会影响原来的
let obj4=Object.assign({},obj1,obj2);
        console.log(obj4);

如何实现深拷贝?

1.用 JSON.stringify 把对象转换成字符串,再用 JSON.parse 把字符串转换成新的对象

但是需要注意的是
可以转成 JSON 格式的对象才能使用这种方法,如果对象中包含 function 或 RegExp 这些就不能用这种方法了。

2.Object.assign()拷贝

当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。

3使用递归的方式实现深拷贝

相关文章

网友评论

      本文标题:...语法与Object.assgin的区别和使用场景

      本文链接:https://www.haomeiwen.com/subject/vfeawltx.html