# \_.assignIn

**语法：**

```javascript
_.assignIn(object, [sources])
```

**源代码链接：**[source](https://github.com/lodash/lodash/blob/4.17.10/lodash.js#L12637)

**npm包链接：**[npm package](https://www.npmjs.com/package/lodash.assignin)

**描述：**

这个方法类似[`_.assign`](https://lodash.com/docs/4.17.10#assign)， 除了它会遍历并继承来源对象的属性。

> **Note:**&#x8FD9;方法会改变`object`。

**开始版本：**&#x34;.0.0

**别名：**`_.extend`

**参数：**

* `object (Object)`: 目标对象。
* `[sources] (...Object)`: 来源对象。

**返回值：**

* `(Object)`: 返回 object。

**例子：**

```javascript
function Foo() {
  this.a = 1;
}

function Bar() {
  this.c = 3;
}

Foo.prototype.b = 2;
Bar.prototype.d = 4;

_.assignIn({ 'a': 0 }, new Foo, new Bar);
// => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
```

> 解析：
>
> 正常情况下标准对象不会有问题
>
> ```javascript
> let A = {a:1, b:1};
> let B = {b:3, c:2};
> let C = {b:2, c:3};
> console.log(_.extend(A, B, C));
>
> console.log(B);
> ```
>
> 解析：注意在使用mongoose（使用的版本是4.1.3）模块时候，如果B的位置是一个模型对象，我发现B位置对象值也收到C对中的值进行了改变。
