¿Qué es un Polyfill?

Publicado el 05.03.2022 a las 12:39

¿Qué es un Polyfill?

¿Qué es un Polyfill?

¿Te han preguntado alguna vez en una entrevista técnica qué es un Polyfill?


Un polyfill no es más que una funcionalidad que añadimos al navegador que debería de tener pero por el motivo que sea no la tiene.


Como sabes, el sort es un método disponible en el prototype de Array de JavaScript. Imagine que por el motivo que sea el método sort no existe, vamos a crear un polyfill del método sort.

Creando un polyfill de sort en Array

Imagina que tenemos un array de número, por ejemplo [23,4,31,44,22,5]


Lo primero que vamos a crear es nuestro método en el prototype de Array que llamaremos miSort. Es importante que no uses una función de flecha ⛔ porque vamos a necesitar hacer referencia al this y con las funciones de flecha no es posible. Usaré el código del algoritmo quicksort que expliqué en este artículo 🤓

Array.prototype.miSort=function(){
  return quickSort(this);
};

Es importante que tengas claro que el this hace referencia al array sobre el que usaremos el nuevo método miSort.


Ahora el código de la función quicksort. Insisto, puedes ver la explicación aquí 🤯

const quickSort=(input) => {
  if(input.length===0) return []; //caso base
  const pivot:number=input[0];
  let arrayBigger=[];
  let arraySmaller=[];
  for(let i:number=1;i<input.length;i++){
    if(input[i]<pivot){
      arraySmaller.push(input[i])
    }else{
      arrayBigger.push(input[i])
    }
  }
  return [...quickSort(arraySmaller),pivot,...quickSort(arrayBigger)];
}

Por último imprimimos en pantalla el resultado de ejecutar el nuevo método miSort al array inicial

console.log([23,4,31,44,22,5].miSort()); //[LOG]: [4, 5, 22, 23, 31, 44]

Resumen

Te dejo todo el código de corrido para que lo pruebes en un playground o donde quieras 🎸

//DEFINO MI POLYFILL AL QUE LLAMAREMOS -> miSort <-
Array.prototype.miSort=function(){
  return quickSort(this);
};

//ALGORITMO QUICKSORT
const quickSort=(input) => {
  if(input.length===0) return []; //caso base
  const pivot:number=input[0];
  let arrayBigger=[];
  let arraySmaller=[];
  for(let i:number=1;i<input.length;i++){
    if(input[i]<pivot){
      arraySmaller.push(input[i])
    }else{
      arrayBigger.push(input[i])
    }
  }
  return [...quickSort(arraySmaller),pivot,...quickSort(arrayBigger)];
}

//PROBAMOS
console.log([23,4,31,44,22,5].miSort());

Hasta luego 🖖

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.2.2