function-name

2.0.0 • Public • Published

node-function-name

Set the "name" property of Function objects

Build Status

Very simple module. Sets the non-writable name property of Function objects. In older versions of node, this functionality is exposed internally to V8, but not exposed to JavaScript, so a native module is required. In newer versions of node, function names can be redefined with Object.defineProperty, which this module uses.

Note that unfortunately only String values are allowed.

NOTE: For users of node prior to iojs@3.0.0, you'll need to use an earlier version of this module, function-name@1, which provides a C++ implementation.

Installation

Install with npm:

$ npm install function-name

Example

var set = require('function-name');
 
function test () {
  throw new Error('blah');
}
 
console.log(test.name);
// "test"
 
// change the "name" property to 'foo'
set(test, 'foo');
 
console.log(test.name);
// "foo"
 
// spaces, and even usually illegal UTF8 chars, are allowed
set(test, '   ☃   ');
 
console.log(test.name);
// "   ☃   "
 
// the newly set "name" also appears in stack traces!
test();
// Error: blah
//     at    ☃    (/Users/nrajlich/node-function-name/t.js:4:9)
//     at Object.<anonymous> (/Users/nrajlich/node-function-name/t.js:23:1)
//     at Module._compile (module.js:449:26)
//     at Object.Module._extensions..js (module.js:467:10)
//     at Module.load (module.js:356:32)
//     at Function.Module._load (module.js:312:12)
//     at Module.runMain (module.js:492:10)
//     at process.startup.processNextTick.process._tickCallback (node.js:244:9)

That's it!

Readme

Keywords

Package Sidebar

Install

npm i function-name

Weekly Downloads

92

Version

2.0.0

License

MIT

Last publish

Collaborators

  • tootallnate