65 lines
2.4 KiB
Markdown
65 lines
2.4 KiB
Markdown
|
---
|
|||
|
title: Object Assign
|
|||
|
localeTitle: 对象分配
|
|||
|
---
|
|||
|
## 对象分配
|
|||
|
|
|||
|
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/javascript/standard-objects/object/object-assign/index.md) 。
|
|||
|
|
|||
|
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。
|
|||
|
|
|||
|
`Object.assign()`方法用于1)向现有对象添加属性和值,2)创建现有对象的新副本,或3)将多个现有对象组合到单个对象中。 `Object.assign()`方法需要一个targetObject作为参数,并且可以接受无限数量的sourceObject作为附加参数。
|
|||
|
|
|||
|
这里需要注意的是始终会修改targetObject参数。如果该参数指向现有对象,则将同时修改和复制该对象。但是,如果希望在不修改原始对象的情况下创建对象的副本,则可以将空对象`{}`作为第一个(或targetObject)参数传递,将要复制的对象作为第二个(或sourceObject)参数传递。
|
|||
|
|
|||
|
如果作为参数传递给`Object.assign()`共享相同的属性(或键),则稍后在参数列表中出现的属性值将覆盖之前出现的属性值。
|
|||
|
|
|||
|
**句法**
|
|||
|
|
|||
|
```javascript
|
|||
|
Object.assign(targetObject, ...sourceObject)
|
|||
|
```
|
|||
|
|
|||
|
**回报价值**
|
|||
|
|
|||
|
`Object.assign()`返回targetObject。
|
|||
|
|
|||
|
**例子**
|
|||
|
|
|||
|
_修改和复制targetObject_
|
|||
|
|
|||
|
```javascript
|
|||
|
let obj = {name: 'Dave', age: 30};
|
|||
|
|
|||
|
let objCopy = Object.assign(obj, {coder: true});
|
|||
|
|
|||
|
console.log(obj); // returns { name: 'Dave', age: 30, coder: true }
|
|||
|
console.log(objCopy); // returns { name: 'Dave', age: 30, coder: true }
|
|||
|
```
|
|||
|
|
|||
|
_无需修改即可复制targetObject_
|
|||
|
|
|||
|
```javascript
|
|||
|
let obj = {name: 'Dave', age: 30};
|
|||
|
|
|||
|
let objCopy = Object.assign({}, obj, {coder: true});
|
|||
|
|
|||
|
console.log(obj); // returns { name: 'Dave', age: 30 }
|
|||
|
console.log(objCopy); // returns { name: 'Dave', age: 30, coder: true }
|
|||
|
```
|
|||
|
|
|||
|
_具有相同属性的对象_
|
|||
|
|
|||
|
```javascript
|
|||
|
let obj = {name: 'Dave', age: 30, favoriteColor: 'blue'};
|
|||
|
|
|||
|
let objCopy = Object.assign({}, obj, {coder: true, favoriteColor: 'red'});
|
|||
|
|
|||
|
console.log(obj); // returns { name: 'Dave', age: 30, favoriteColor: 'blue' }
|
|||
|
console.log(objCopy); // { name: 'Dave', age: 30, favoriteColor: 'red', coder: true }
|
|||
|
```
|
|||
|
|
|||
|
#### 更多信息:
|
|||
|
|
|||
|
[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
|
|||
|
[ES6中的Object.assign简介(视频)](https://youtu.be/vM7Tif98Dlo)
|