# caller-of **Repository Path**: mirrors_WebReflection/caller-of ## Basic Information - **Project Name**: caller-of - **Description**: The tiniest yet most powerful JS utility ever :D - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-19 - **Last Updated**: 2025-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README caller-of ========= The tiniest yet most powerful JS utility ever :D ```JavaScript /** WTFPL Style License */ function callerOf(c) {return c.call.bind(c)} ``` ### What Does Above Code Do Here is what we usually do ```JavaScript object.hasOwnProperty(key) ``` Here is what `callerOf` create ```JavaScript hasOwnProperty(object, key) ``` so we can borrow any method at any time and reuse it in a minifier friendly way. ```JavaScript 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); ``` ### Compatibility 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 ^_^ ```JavaScript // 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)); ```