Trato de usar includes en prototipo pero no funciona pero no obtengo los resultados esperados:
Number.prototype.inList = function (list) { return list.includes(this); } let value = 0; let find1 = value.inList([0,1]); let find2 = [0,1].includes(value); console.log("find1", find1); // false console.log("find2", find2); // trueUsando Number#valueOf :
El método valueOf() devuelve el valor primitivo envuelto de un objeto Número.
Number.prototype.inList = function (list) { return list.includes(this.valueOf()); } let value = 0; console.log(value.inList([0,1]));Esto sucede en modo no estricto, donde la compatibilidad requiere que this sea siempre un objeto, no un primitivo. Entonces, en su caso, this es una instancia del constructor Number y, por supuesto, ese objeto no aparece en su lista.
En modo estricto, su código funciona, ya que this será el valor primitivo (número)
Number.prototype.inList = function (list) { "use strict"; return list.includes(this); } let value = 0; let find1 = value.inList([0,1]); let find2 = [0,1].includes(value); console.log("find1", find1); // true console.log("find2", find2); // trueAquí, el modo estricto solo es efectivo en la función, y esto es suficiente para este problema. Si su secuencia de comandos no tiene "dependencias heredadas", es mejor que lo configure globalmente.