node-function-name
Function
objects
Set the "name" property of
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 = ;{throw 'blah';}console;// "test"// change the "name" property to 'foo';console;// "foo"// spaces, and even usually illegal UTF8 chars, are allowed;console;// " ☃ "// the newly set "name" also appears in stack traces!;// 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!