The tiniest yet most powerful JS utility ever :D
/** WTFPL Style License */
function callerOf(c) {return c.call.bind(c)}
Here is what we usually do
object.hasOwnProperty(key)
Here is what callerOf
create
hasOwnProperty(object, key)
so we can borrow any method at any time and reuse it in a minifier friendly way.
var bind = callerOf(Function.bind);
// easy log
var log = bind(console.log, console);
log('it works');
// common borrowed methods
var
has = callerOf({}.hasOwnProperty),
whoIs = callerOf({}.toString),
forEach = callerOf([].forEach),
slice = callerOf([].slice);
has({a:1}, "a"); // true
has({a:1}, "toString"); // false
whoIs([]); // "[object Array]"
whoIs(false); // "[object Boolean]"
slice(document.querySelectorAll("*")); // array
(function (obj){
var args = slice(arguments, 1);
}());
forEach(document.getElementsByTagName("body"), log);
Every JavaScript engine I know, included IE.
For node.js simply npm install caller-of
then var callerOf = require('caller-of')
You can use this tiny yet working polyfill ^_^
// 139 bytes gzipped
/*! (C) WebReflection, Mit Style License */
(function (P) {
'use strict';
if (!P.bind) {
P.bind = function (s) {
var
c = this,
l = [].slice,
a = l.call(arguments, 1);
return function bind() {
return c.apply(s, a.concat(l.call(arguments)));
};
};
}
}(Function.prototype));