Polyfill
La palabra "polyfill" es un termino inventado por (Remy Sharp) (https://remysharp.com/2010/10/08/what-is-a-polyfill) usado para referirse a tomar la definicion de una nueva caracteristica y producir una pieza de codigo que es equivalente a su comportamiento, y puede ser ejecutada en entornos desactualizados.
Por ejemplo, ES6 define una utilidad llamada Number.isNaN(..)
para proporcionar una verificacion presisa sin errores para valores NaN
, dejando obsoleto la utilidad original isNaN(..)
. Es sencillo hacer un pollify para esta utilidad para que pueda ser usado en su codigo independientemente si el usuario final esta usando un navagador con ES6 o no.
Considere:
if (!Number.isNaN) {
Number.isNaN = function isNaN(x) {
return x !== x;
};
}
La sentencia if
protege de aplicar el pollify en navagadores ES6 donde esta ya existe. Si no esta aun presente, definimos Number.isNaN(..)
.
Nota: La comprobacion que hacemos toma ventanja de un capricho de los valores NaN, y es que ellos son el unico valor en todo el lenguaje que no es igual a si mismo. Asi que el valor
NaNes el unico que haria
x !== xsea
true.
No a todas las caracteristicas se les puede realizar un pollify. A veces a la mayoria de los comportamientos se les puede hacer pollify, con algunas variaciones. Usted debera ser muy, muy cuidadoso de implementar un pollify por usted mismo, para asugurarse de que se esta adhiriendo a la especificacion la mas estrictamente posible.
O mejor aun, use un conjunto de pollifys que ya han sido probadas en las que puede confiar, como las que proprociona ES5-Shim (https://github.com/es-shims/es5-shim) y ES6-Shim (https://github.com/es-shims/es6-shim).