Skip to content

@THEtheChad /Defer.js
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Defers execution of the callback until exec is run. At that point, all future calls are executed immediately.
function Defer(callback){
if(!this instanceof Defer)
return new Defer(callback);
var queue = []
, callback = callback
, slice = Array.prototype.slice
, changeling = function(){
queue.push({
'context': this,
'args' : slice.call(arguments, 0)
});
}
, wrapper = function(){
changeling.apply(this, slice.call(arguments, 0));
}
;//var
wrapper.exec = function(){
var call;
while(call = queue.pop()){
callback.apply(call.context, call.args);
}
changeling = callback;
}
return wrapper;
}
@kputnam

var func = function(x) { return x };
func.hello = function(who) { return "hey baby, " + who; }

func(10) // => 10
func.hello("chad") // => "hey baby, chad"

@kputnam
var func = (function() {
  var privateData = 0;

  var _func = function(x) { privateData ++; return x; };
  _func.hello = function(who) { return "you called " + privateData + " times"; }

  return _func;
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.