Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

151
Visualizações
Javascript es la mejor y más rápida forma de sobrecarga de funciones

Escribí el siguiente código para sobrecargar funciones en Javascript. Este código puede ejecutarse lentamente en proyectos grandes. ¿Hay otras formas de implementar funciones de sobrecarga en Javascript? ¿Alguna otra forma más rápida y práctica?

 (() => { //array that store functions var Funcs = [] /** * @param {function} f overload function * @param {string} fname overload function name * @param {parameters} vtypes function parameters type descriptor (number,string,object....etc */ overloadFunction = function(f, fname, ...vtypes) { var k,l, n = false; if (!Funcs.hasOwnProperty(fname)) Funcs[fname] = []; Funcs[fname].push([f, vtypes?vtypes: 0 ]); window[fname] = function() { for (k = 0; k < Funcs[fname].length; k++) if (arguments.length == Funcs[fname][k][0].length) { n=true; if (Funcs[fname][k][1]!=0) for(i=0;i<arguments.length;i++) { if(typeof arguments[i]!=Funcs[fname][k][1][i]) { n=false; } } if(n) return Funcs[fname][k][0].apply(this, arguments); } } } })(); //First sum function definition with parameter type descriptors overloadFunction((a,b)=>{return a+b},"sum","number","number") //Second sum function definition with parameter with parameter type descriptors overloadFunction((a,b)=>{return a+" "+b},"sum","string","string") //Third sum function definition (not need parameter type descriptors,because no other functions with the same number of parameters overloadFunction((a,b,c)=>{return a+b+c},"sum") //call first function console.log(sum(4,2));//return 6 //call second function console.log(sum("4","2"));//return "4 2" //call third function console.log(sum(3,2,5));//return 10 //ETC...

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El concepto de sobrecarga es evitar una función con infinitos parámetros. Eso es lo contrario de tu patrón. Idealmente, una función debería tener un puñado de parámetros. Una función sobrecargada pasa varios parámetros dentro del parámetro sobrecargado.

 function overload(fname, arr=[]){ let sum = 0; for(let i=0; i<arr.length; i++){ sum += arr[i]; } return fname + sum; } overload("Juan", [1]);

Como tal, arr no se considera sobrecargado, tiene una longitud indeterminada. Pero si en lugar de arr tuvieras obj, podrías pasar cualquier número de tipos o valores indiscriminadamente.

 function overload(fname, obj={}){ if(obj.arr){} if(obj.f){} } overload("Juan", {"arr":[1], "f":true, "infinite":-Infinity});

Este parámetro sobrecargado sería ideal para datos con alcance u origen cuestionable.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda