mirror of
https://github.com/flynx/types.js.git
synced 2025-10-29 02:20:07 +00:00
69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
/**********************************************************************
|
|
*
|
|
*
|
|
*
|
|
**********************************************/ /* 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
|
|
// .post(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
|
|
// .post(function(res){
|
|
// return res.pop() })
|
|
//
|
|
// XXX this more complicated and less clear than:
|
|
// Array.prototype.greatest =
|
|
// function(){
|
|
// return this
|
|
// .sort()
|
|
// .pop() }
|
|
// ...are there cases when this is actually needed???
|
|
// XXX add doc...
|
|
before: function(func){
|
|
var that = this
|
|
return function(){
|
|
var res = func.call(this, ...arguments)
|
|
res = res === undefined ?
|
|
that
|
|
: res
|
|
return res.call(this, ...arguments) }},
|
|
after: 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 })
|