JSFiddle - React, Tailwind, and code Playground

JavaScript

function addMethod(obj, methodName, fn) {
	// откуда тут появляется ссылка на анон функцию из 
  // строки 18 ? Должна old же должна быть анонимная функция 
  // из 21
	const old = obj[methodName];
	

  obj[methodName] = function () {
    if (fn.length === arguments.length) {
      return fn.apply(this, arguments);
    } else if (typeof old === 'function') {
      return old.apply(this, arguments);
    }
  };
}

let ninja = {};

addMethod(ninja, 'whatever', a => console.log(`one: ${a}`));
ninja.whatever(1);
addMethod(ninja, 'whatever', (a,b) => console.log(a, b));
ninja.whatever(2, 2);
addMethod(ninja, 'whatever', (a,b, c) => console.log(a, b, c));
ninja.whatever(3);
console.log(ninja);
console.dir(addMethod);