diff --git a/Function.js b/Function.js new file mode 100644 index 0000000..67086e1 --- /dev/null +++ b/Function.js @@ -0,0 +1,49 @@ +/********************************************************************** +* +* +* +**********************************************/ /* c8 ignore next 2 */ +((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define) +(function(require){ var module={} // make module AMD/node compatible... +/*********************************************************************/ + +var object = require('ig-object') + + +/*********************************************************************/ + +var FunctionProtoMixin = +module.FunctionProtoMixin = +object.Mixin('FunctionProtoMixin', 'soft', { + // NOTE: this is more usefull to define new functions for later reuse + // rather than one-time "modding", for example, calling this on + // instance methods will lose context: + // ;[1,3,2] + // .sort + // .then(function(res){ + // return res.pop() }) + // a better way to do this: + // ;[1,3,2] + // .sort() + // .pop() + // and a better way to use this is: + // Array.prototype.greatest = + // Array.prototype + // .sort + // .then(function(res){ + // return res.pop() }) + then: function(func){ + var that = this + return function(){ + return func.call(this, + that.call(this, + ...arguments), + ...arguments) }}, +}) + +FunctionProtoMixin(Function.prototype) + + + +/********************************************************************** +* vim:set ts=4 sw=4 : */ return module }) diff --git a/main.js b/main.js index a57dd3e..0fbb32f 100644 --- a/main.js +++ b/main.js @@ -9,6 +9,7 @@ // Extend built-in types... require('./Object') +//require('./Function') require('./Array') require('./Set') require('./Map')