JSFiddle - React, Tailwind, and code Playground

by paulL

HTML

<!-- Method overloading -->

JavaScript

function addMethod(object, name, fn) {
    var old = object[name]; 
    object[name] = function(){ 
        if (fn.length == arguments.length){ 
            return fn.apply(this, arguments) ;
        }else if(typeof old == 'function') {
            return old.apply(this, arguments); 
        }
     };
};

var ninjas = { 
    values: ["Dean Edwards", "Sam Stephenson", "Alex Russell"]
};
addMethod(ninjas, "find", function(){ 
    return console.log(this.values);
});
addMethod(ninjas, "find", function(name){ 
    var ret = [];
    for (var i = 0; i < this.values.length; i++){
        if (this.values[i].indexOf(name) == 0){
            ret.push(this.values[i]);
        }
    }
    return console.log(ret);
});
addMethod(ninjas, "find", function(first, last){
    var ret = [];
    for (var i = 0; i < this.values.length; i++){
        if (this.values[i] == (first + " " + last)){
            ret.push(this.values[i]);
        }
    }
    return ret;
});

//ninjas.find("Dean");    
  console.log(ninjas);