# mimic-fn [](https://travis-ci.org/sindresorhus/mimic-fn) | |
> Make a function mimic another one | |
Useful when you wrap a function in another function and like to preserve the original name and other properties. | |
## Install | |
``` | |
$ npm install mimic-fn | |
``` | |
## Usage | |
```js | |
const mimicFn = require('mimic-fn'); | |
function foo() {} | |
foo.unicorn = '🦄'; | |
function wrapper() { | |
return foo(); | |
} | |
console.log(wrapper.name); | |
//=> 'wrapper' | |
mimicFn(wrapper, foo); | |
console.log(wrapper.name); | |
//=> 'foo' | |
console.log(wrapper.unicorn); | |
//=> '🦄' | |
``` | |
## API | |
It will copy over the properties `name`, `length`, `displayName`, and any custom properties you may have set. | |
### mimicFn(to, from) | |
Modifies the `to` function and returns it. | |
#### to | |
Type: `Function` | |
Mimicking function. | |
#### from | |
Type: `Function` | |
Function to mimic. | |
## Related | |
- [rename-fn](https://github.com/sindresorhus/rename-fn) - Rename a function | |
- [keep-func-props](https://github.com/ehmicky/keep-func-props) - Wrap a function without changing its name, length and other properties | |
## License | |
MIT © [Sindre Sorhus](https://sindresorhus.com) | |