Tengo un método que calcula un aumento porcentual entre dos valores. Y en mi "clase" se ve así:
percIncrease(a, b) { let percent; if (b !== 0) { if (a !== 0) { percent = ((b - a) / a) * 100; } else { percent = b * 100; } } else { percent = -a * 100; } return percent.toFixed(3); }ahora porque quiero que sea reutilizable en todas partes, estoy tratando de definirlo en un tipo (Número), para poder usarlo en todas partes.
Intenté esto:
Number.prototype.percIncrease = function (a, b) { let percent; if (b !== 0) { if (a !== 0) { percent = ((b - a) / a) * 100; } else { percent = b * 100; } } else { percent = -a * 100; } return percent.toFixed(3); };pero si trato de usarlo así:
Number.percIncrease(a,b);TypeError: Number.percIncrease no es una función
No soy tan bueno en el uso de términos de Javascript, pero lo que realmente estoy intentando es declarar un método estático en un tipo específico (por ejemplo, Número).
¿Cómo haría esto?
EDITAR:
O no tiene que ser estático. Trabajar en un valor haría el trabajo. Por ejemplo este (pseudocódigo):
myNumber.percIncrease(inCompareToValue: anotherNumber)Necesita una llamada diferente del prototipo y tal vez cambiar un poco el estilo.
Number.prototype.percIncrease = function(base) { let percent; if (base) { percent = this ? (base - this) * 100 / this : base * 100; } else { percent = -this * 100; } return percent.toFixed(3); }; console.log(5..percIncrease(4));Cuando define un método en el prototipo, se usa cuando llama al método en una instancia. Los métodos estáticos deben agregarse directamente al tipo, no al prototipo:
Number.percIncrease = function (a, b) { let percent; if (b !== 0) { if (a !== 0) { percent = ((b - a) / a) * 100; } else { percent = b * 100; } } else { percent = -a * 100; } return percent.toFixed(3); }; console.log(Number.percIncrease(10, 15));llama a tu función así:
Number.prototype.percIncrease(1, 10); //"1,10" are examples