[6a3a178] | 1 | [![Build Status][travis-svg]][travis-url]
|
---|
| 2 | [![dependency status][deps-svg]][deps-url]
|
---|
| 3 | [![dev dependency status][dev-deps-svg]][dev-deps-url]
|
---|
| 4 |
|
---|
| 5 | # extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>
|
---|
| 6 |
|
---|
| 7 | `node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
|
---|
| 8 |
|
---|
| 9 | Notes:
|
---|
| 10 |
|
---|
| 11 | * Since Node.js >= 4,
|
---|
| 12 | [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
|
---|
| 13 | now offers the same functionality natively (but without the "deep copy" option).
|
---|
| 14 | See [ECMAScript 2015 (ES6) in Node.js](https://nodejs.org/en/docs/es6).
|
---|
| 15 | * Some native implementations of `Object.assign` in both Node.js and many
|
---|
| 16 | browsers (since NPM modules are for the browser too) may not be fully
|
---|
| 17 | spec-compliant.
|
---|
| 18 | Check [`object.assign`](https://www.npmjs.com/package/object.assign) module for
|
---|
| 19 | a compliant candidate.
|
---|
| 20 |
|
---|
| 21 | ## Installation
|
---|
| 22 |
|
---|
| 23 | This package is available on [npm][npm-url] as: `extend`
|
---|
| 24 |
|
---|
| 25 | ``` sh
|
---|
| 26 | npm install extend
|
---|
| 27 | ```
|
---|
| 28 |
|
---|
| 29 | ## Usage
|
---|
| 30 |
|
---|
| 31 | **Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
|
---|
| 32 |
|
---|
| 33 | *Extend one object with one or more others, returning the modified object.*
|
---|
| 34 |
|
---|
| 35 | **Example:**
|
---|
| 36 |
|
---|
| 37 | ``` js
|
---|
| 38 | var extend = require('extend');
|
---|
| 39 | extend(targetObject, object1, object2);
|
---|
| 40 | ```
|
---|
| 41 |
|
---|
| 42 | Keep in mind that the target object will be modified, and will be returned from extend().
|
---|
| 43 |
|
---|
| 44 | If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
|
---|
| 45 | Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
|
---|
| 46 | Warning: passing `false` as the first argument is not supported.
|
---|
| 47 |
|
---|
| 48 | ### Arguments
|
---|
| 49 |
|
---|
| 50 | * `deep` *Boolean* (optional)
|
---|
| 51 | If set, the merge becomes recursive (i.e. deep copy).
|
---|
| 52 | * `target` *Object*
|
---|
| 53 | The object to extend.
|
---|
| 54 | * `object1` *Object*
|
---|
| 55 | The object that will be merged into the first.
|
---|
| 56 | * `objectN` *Object* (Optional)
|
---|
| 57 | More objects to merge into the first.
|
---|
| 58 |
|
---|
| 59 | ## License
|
---|
| 60 |
|
---|
| 61 | `node-extend` is licensed under the [MIT License][mit-license-url].
|
---|
| 62 |
|
---|
| 63 | ## Acknowledgements
|
---|
| 64 |
|
---|
| 65 | All credit to the jQuery authors for perfecting this amazing utility.
|
---|
| 66 |
|
---|
| 67 | Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
|
---|
| 68 |
|
---|
| 69 | [travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
|
---|
| 70 | [travis-url]: https://travis-ci.org/justmoon/node-extend
|
---|
| 71 | [npm-url]: https://npmjs.org/package/extend
|
---|
| 72 | [mit-license-url]: http://opensource.org/licenses/MIT
|
---|
| 73 | [github-justmoon]: https://github.com/justmoon
|
---|
| 74 | [github-insin]: https://github.com/insin
|
---|
| 75 | [github-ljharb]: https://github.com/ljharb
|
---|
| 76 | [npm-version-png]: http://versionbadg.es/justmoon/node-extend.svg
|
---|
| 77 | [deps-svg]: https://david-dm.org/justmoon/node-extend.svg
|
---|
| 78 | [deps-url]: https://david-dm.org/justmoon/node-extend
|
---|
| 79 | [dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
|
---|
| 80 | [dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
|
---|
| 81 |
|
---|