Package Exports
- rename-function
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rename-function) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
rename-function

Rename a given function. Tries to be cross-platform and guaranteed. Useful when you want to preserve name of bound function. In bonus, allows passing context to the renamed function.
Install
npm i rename-function --saveHow it works? Strategy. Name priority.
There's a couple of things that you should be aware off and make your attention, few scenarios - you can do few things with package like this - rename function, binding function with context and both together.
- Just rename given
fnto havenameinstead of original name. - Throw
TypeErrorif givenfnnot a function. - If only
fnis given, it is returned without modifications - nothing done. - If
fnis given and falseyname(meaning non-string) - just returns thefn- nothing done. - If
fnis given andnameis same as original name - just returns thefn- nothing done. - If
fn,nameandctxis given, andnameis as original - returns function withctxand same name. - If
fnandctxis given, then function remains the same - onlyctxis bound.
Meaning, this package try to follow native behaviours. Because you can't do such thing
function zooparks () { return this }
var boundOne = renameFunction(zooparks, {foo: 'one'})
var boundTwo = renameFunction(boundOne, {foo: 'two'})
var boundZzz = renameFunction(boundTwo, {foo: 'zzz'})
console.log(boundZzz()) // => {foo: 'one'}and expect boundZzz() to return {foo: 'zzz'}, it would be {foo: 'one'} always. It's still a bit strange even to me, because of use the thing that I call "smart binding" with which I tried to solve this problem and will continue. Kinda strange, when debugging it seems it shows expected results. But in other hand that's the native behaviour, see this one:
function zooparks () { return this }
var boundOne = zooparks.bind({foo: 'one'})
var boundTwo = boundOne.bind({foo: 'two'})
var boundZzz = boundTwo.bind({foo: 'zzz'})
console.log(boundZzz()) // => {foo: 'one'}Usage
For more use-cases see the tests
const renameFunction = require('rename-function')renameFunction
Rename given
fnwithname. If givennameis same as old, then thefnis just returned earlier, nothing more is done.
Params
fn{Function}name{String|Object}ctx{Object}returns{Function}: or throwsTypeErroriffnnot a function
Example
var rename = require('rename-function')
var getName = require('get-fn-name')
var fn = rename(fixture () {}, 'abc')
console.log(getName(fn)) // => 'abc'
console.log(fn.name) // => 'abc'
// passing context
var bound = rename(fixture foo () { return this }, 'zoo', {a: 'b'})
console.log(bound()) // => {a: 'b'}
console.log(bound.name) // => 'zoo'
console.log(getName(bound)) // => 'zoo'Related
- bind-context: Bind context to a function and preserves her name. Can be used… more | homepage
- function-arguments: Get arguments of a function, useful for and used in dependency injectors.… more | homepage
- is-async-function: Is function really asynchronous function? Trying to guess that based on check… more | homepage
- is-bound-function: Check if given function is bound or not. | homepage
- is-callback-function: Returns true if function is a callback. Checks its name is one… more | homepage
- parse-function: Parse a function, arrow function or string to object with name, args,… more | homepage
- smart-bind: Smarter binding of function with some context. It uses .apply instead of… more | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.