我想用扩充原型创建函数实例,以避免猴子修补Function.prototype
并避免将属性复制到每个函数实例。
通过继承Function原型似乎不可能。
var util = require('util');
function Fn () {}
util.inherits(Fn, Function);
var fn = new Fn('a', 'return a;');
fn.call(null, 5);
// TypeError: object is not a function
fn.apply(null, [ 5 ]);
// TypeError: Function.prototype.toString is not generic
// at Fn.toString (native)
修改:我为什么要这样做?
尝试编写可链接的高阶函数来处理promises。
when(' promise').then(library.trim().toUpperCase())
// becomes 'PROMISE'