Skip to content

Commit

Permalink
Porting forward_static_call functions and fix to call_user_func().
Browse files Browse the repository at this point in the history
  • Loading branch information
brettz9 committed Jul 1, 2009
1 parent ebbc62c commit fff8353
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 3 deletions.
1 change: 0 additions & 1 deletion _unported/funchand/forward_static_call.js

This file was deleted.

1 change: 0 additions & 1 deletion _unported/funchand/forward_static_call_array.js

This file was deleted.

2 changes: 1 addition & 1 deletion functions/funchand/call_user_func.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ function call_user_func(cb, parameters) {
throw new Error(func + ' is not a valid function');
}

return func.apply(null, Array.prototype.slice.call(parameters, 1));
return func.apply(null, Array.prototype.slice.call(arguments, 1));
}
25 changes: 25 additions & 0 deletions functions/funchand/forward_static_call.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function forward_static_call(cb, parameters) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// % note 1: No real relevance to late static binding here; might also use call_user_func()
// * example 1: forward_static_call('isNaN', 'a');
// * returns 1: true

var func;

if (typeof cb == 'string') {
if (typeof this[cb] == 'function') {
func = this[cb];
} else {
func = (new Function(null, 'return ' + cb))();
}
} else if (cb instanceof Array) {
func = eval(cb[0]+"['"+cb[1]+"']");
}

if (typeof func != 'function') {
throw new Error(func + ' is not a valid function');
}

return func.apply(null, Array.prototype.slice.call(arguments, 1));
}
27 changes: 27 additions & 0 deletions functions/funchand/forward_static_call_array.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function forward_static_call_array(cb, parameters) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// % note 1: No real relevance to late static binding here; might also use call_user_func_array()
// * example 1: forward_static_call_array('isNaN', ['a']);
// * returns 1: true
// * example 2: forward_static_call_array('isNaN', [1]);
// * returns 2: false

var func;

if (typeof cb == 'string') {
if (typeof this[cb] == 'function') {
func = this[cb];
} else {
func = (new Function(null, 'return ' + cb))();
}
} else if (cb instanceof Array) {
func = eval(cb[0]+"['"+cb[1]+"']");
}

if (typeof func != 'function') {
throw new Error(func + ' is not a valid function');
}

return func.apply(null, parameters);
}

0 comments on commit fff8353

Please sign in to comment.