# Function merge

- merge(dst, ...src): any

- Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s) to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so by passing an empty object as the target: `let object = angular.merge({}, object1, object2)`.

  Unlike angular.extend extend(), `merge()` recursively descends into object properties of source objects, performing a deep copy.

  #### Parameters

  - dst: any

    Destination object.

  - `Rest`...src: any[]

    Source object(s).

  #### Returns any

  Reference to `dst`.

  #### Deprecated

  sinceVersion="1.6.5" This function is deprecated, but will not be removed in the 1.x lifecycle. There are edge cases (see angular.merge#known-issues known issues) that are not supported by this function. We suggest using another, similar library for all-purpose merging, such as lodash's merge().

  #### Known Issue

  This is a list of (known) object types that are not handled correctly by this function:

  - `Blob`
  - `MediaStream`
  - `CanvasGradient`
  - AngularJS $rootScope.Scope scopes;

  `angular.merge` also does not support merging objects with circular references.

  - Defined in shared/utils.js:462