The tiniest yet most powerful JS utility ever :D

npm install caller-of
1 downloads in the last week
4 downloads in the last month


The tiniest yet most powerful JS utility ever :D

/*! (C) WebReflection, Mit Style License */
function callerOf(c) {'use strict'; return; }

What Does Above Code Do

Here is what we usually do


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
  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')

What If No Function.prototype.bind

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) {
        c = this,
        l = [].slice,
        a =, 1);
      return function bind() {
        return c.apply(s, a.concat(;
npm loves you