JSFiddle - React, Tailwind, and code Playground

by nickadeemus2002

JavaScript

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


var myClass = {
	students: [
  {id: 1, name: 'nisan'}, 
  {id: 2, name: 'niki'}, 
  {id: 3, name: 'dan'}
  ]
};

addMethod(myClass, "get", function(){
	return this.students;
});

addMethod(myClass, "get", function(id){
	return this.students[id];
});

addMethod(myClass, "get", function(id, name){
	return this.students.filter(function( student, idx){
  	if(student.id === id && student.name === name){
    	return student;
    }
  });
});

console.log("myClass.get() => ", myClass.get() );
console.log("myClass.get(1) => ", myClass.get(1) );
console.log("myClass.get(1, 'nisan') => ", myClass.get(1, 'nisan') );