前端assign用法
前言
在前端开发中,经常需要对对象进行属性的赋值和拷贝操作。而JavaScript中提供了一个方便的方法来实现这个功能,那就是Object.assign()方法。
spring framework表达式assignObject.assign()方法可以将一个或多个源对象的属性复制到目标对象中,并返回目标对象。它是ES6新增的一个静态方法,它的基本语法如下:
Object.assign(target, ...sources)
其中,target表示目标对象,sources表示一个或多个源对象。
下面我们来详细介绍一下Object.assign()方法的用法。
基本用法
1. 将一个源对象的属性复制到目标对象中:
```
let target = { a: 1 };
let source = { b: 2 };
Object.assign(target, source);
console.log(target); // { a: 1, b: 2 }
```
上面代码中,将source对象的属性复制到target对象中,并返回target。
2. 将多个源对象的属性复制到目标对象中:
```
let target = { a: 1 };
let source1 = { b: 2 };
let source2 = { c: 3 };
Object.assign(target, source1, source2);
console.log(target); // { a: 1, b: 2, c: 3 }
```
上面代码中,将source1和source2两个源对象的属性复制到target对象中,并返回target。
3. 如果有重名属性,则后面的源对象会覆盖前面的:
```
let target = { a: 1 };
let source1 = { b: 2, a: 3 };
let source2 = { c: 4, a: 5 };
Object.assign(target, source1, source2);
console.log(target); // { a: 5, b: 2, c: 4 }
```
上面代码中,source1和source2都有a属性,但是source2的a属性在后面,所以会覆盖掉source1的a属性。
4. 如果源对象是null或undefined,则会报错:
```
let target = { a: 1 };
let source = null;
Object.assign(target, source); // TypeError
```
上面代码中,source为null,所以会报错。
高级用法
1. 拷贝对象
Object.assign()方法可以用来拷贝一个对象。由于它是浅拷贝,所以如果源对象中有引用类型的属性,则只会复制它的引用地址。
```
let obj1 = { a: { b: 1 } };
let obj2 = Object.assign({}, obj1);
console.log(obj2); // { a: { b: 1 } }
obj1.a.b = 2;
console.log(obj2); // { a: { b: 2 } }
```
上面代码中,obj1和obj2都有一个a属性,它们的值都是一个包含b属性的对象。然后使用Object.assign()方法将obj1复制到obj2中。当修改obj1.a.b的值时,发现obj2.a.b也被修改了。这是因为浅拷贝只复制了引用地址。
如果要实现深拷贝,可以使用其他的方法,比如JSON.parse()和JSON.stringify()。
2. 合并对象
Object.assign()方法还可以用来合并多个对象。这个功能在实际开发中非常常用。
```
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = { c: 3 };
let obj4 = Object.assign({}, obj1, obj2, obj3);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论