mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs(object): add object.assign
This commit is contained in:
parent
feaca88fc0
commit
b96a3fd1d9
@ -559,12 +559,26 @@ const DEFAULTS = {
|
||||
|
||||
function processContent(options) {
|
||||
options = Object.assign({}, DEFAULTS, options);
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
上面代码中,`DEFAULTS`对象是默认值,`options`对象是用户提供的参数。`Object.assign`方法将`DEFAULTS`和`options`合并成一个新对象,如果两者有同名属性,则`option`的属性值会覆盖`DEFAULTS`的属性值。
|
||||
|
||||
注意,由于存在深拷贝的问题,`DEFAULTS`对象和`options`对象的所有属性的值,都只能是简单类型,而不能指向另一个对象。否则,将导致`DEFAULTS`对象的该属性不起作用。
|
||||
注意,由于存在深拷贝的问题,`DEFAULTS`对象和`options`对象的所有属性的值,最好都是简单类型,不要指向另一个对象。否则,`DEFAULTS`对象的该属性很可能不起作用。
|
||||
|
||||
```javascript
|
||||
const DEFAULTS = {
|
||||
url: {
|
||||
host: 'example.com',
|
||||
port: 7070
|
||||
},
|
||||
};
|
||||
|
||||
processContent({ url: {port: 8000} })
|
||||
```
|
||||
|
||||
上面代码中,原意是将`url.port`改成8000,`url.host`不变。实际结果却是`options.url`覆盖掉`DEFAULTS.url`,`url.host`不存在了。
|
||||
|
||||
## 属性的可枚举性
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user