diff options
author | Matthias Schulte <post@lupo49.de> | 2011-07-17 12:18:37 +0200 |
---|---|---|
committer | Matthias Schulte <post@lupo49.de> | 2011-07-17 12:18:37 +0200 |
commit | 8e5a3957cd8de15f48dc27e9c07dfe4033fd6997 (patch) | |
tree | e819b734e24a3fb1a40da50383dfbaf34ba3b1d6 /lib/scripts/events.js | |
parent | 3f3f8d1d768a4996d5a2fcc0ce8715e455ce7cad (diff) | |
parent | 1e542e417725bb148253929fac9146832d978e45 (diff) | |
download | rpg-8e5a3957cd8de15f48dc27e9c07dfe4033fd6997.tar.gz rpg-8e5a3957cd8de15f48dc27e9c07dfe4033fd6997.tar.bz2 |
Merge remote branch 'upstream/master'
Diffstat (limited to 'lib/scripts/events.js')
-rw-r--r-- | lib/scripts/events.js | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/scripts/events.js b/lib/scripts/events.js index 95564be39..796d3cc4c 100644 --- a/lib/scripts/events.js +++ b/lib/scripts/events.js @@ -32,9 +32,19 @@ function addInitEvent(func) { * @param mixed - any arguments to be passed to the function * @returns functionref */ -function bind (fnc) { - var args = Array.prototype.slice.call(arguments, 1); - return function() { - return fnc.apply(this, args); +function bind(fnc/*, ... */) { + var Aps = Array.prototype.slice; + // Store passed arguments in this scope. + // Since arguments is no Array nor has an own slice method, + // we have to apply the slice method from the Array.prototype + var static_args = Aps.call(arguments, 1); + + // Return a function evaluating the passed function with the + // given args and optional arguments passed on invocation. + return function (/* ... */) { + // Same here, but we use Array.prototype.slice solely for + // converting arguments to an Array. + return fnc.apply(this, + static_args.concat(Aps.call(arguments, 0))); }; } |