You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					70 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					70 lines
				
				1.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# 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)
							 |