En JavaScript, el método Object.prototype.valueOf() se usa para devolver el valor primitivo del objeto especificado. Siempre que se requiere un valor primitivo, JavaScript invoca automáticamente el método valueOf(). El método valueOf() es heredado automáticamente por cada objeto en JavaScript. Cada objeto anula este método para devolver un valor primitivo apropiado. Si no hay un valor primitivo presente para este objeto, JavaScript devuelve el objeto en sí. Podemos anular este método para convertir cualquier objeto integrado en un valor primitivo. En el caso de los tipos de objetos personalizados, anulamos este método para llamar a un método personalizado.
Si estamos tratando con tipos de objetos personalizados, podemos usar la siguiente sintaxis para anular el método valueOf() para ello:
Sintaxis:
ObjectType.prototype.valueOf = function() { return CustomPrimitiveValue; };
En esta sintaxis,
- ObjectType: el tipo de objeto personalizado creado por el usuario.
- CustomPrimitiveValue: el valor primitivo del objeto especificado.
Aunque el método valueOf() se invoca automáticamente en JavaScript, podemos usar la siguiente sintaxis para invocarlo nosotros mismos:
Sintaxis:
ObjectType.valueOf()
Ejemplo:
JavaScript
<script> function myFunction() { // Creating a custom object // type ExType function ExType(n) { this.number = n; } // A callback method overriding // the valueOf() method ExType.prototype.valueOf = function () { // Returned valued is 18+3 which is 21 return this.number + 3; }; // Creating an object of ExType object type const object1 = new ExType(18); // Logs 21-12 which is 9 console.log(object1 - 12); } myFunction(); </script>
Producción:
En el ejemplo anterior, intentamos anular el método valueOf() para devolver el valor primitivo como el número real más 3. Por lo tanto, el valor primitivo devuelto después de pasar 18 como argumento era 21. Mientras intentamos registrar el valor primitivo menos 12, obtuvimos 21-12, que es 9 como nuestra respuesta final.
Navegadores compatibles:
- Chrome 1 y superior
- Borde 12 y superior
- Firefox 1 y superior
- Internet Explorer 4 y superior
- Ópera 3 y superior
- Safari 1 y superior
Publicación traducida automáticamente
Artículo escrito por ashutoshrathi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA