El método JavaScript valueOf():¿qué hace realmente?

Este tutorial rápido explicará el JavaScript valueOf() Método, qué hace y por qué podría usarlo.

El JavaScript valueOf() método obtiene el primitivo valor del objeto desde el que se llama. Por lo general, no necesitará llamarlo, sin embargo, tiene sus casos de uso.

Primitivas vs Objetos

En JavaScript, un valor o variable tiene un tipo de valor. Un primitivo es un valor que no es un objeto, sin métodos ni propiedades, que representa solo los datos en los que existe.

JavaScript tiene 7 tipos de datos primitivos:

  • cadena
  • número
  • grande
  • booleano
  • indefinido
  • símbolo
  • nulo

Sintaxis del método valueOf() de JavaScript

La sintaxis del método valueOf() es la siguiente:

OBJ.valueOf()

Tenga en cuenta que:

  • OBJ es cualquier objeto del que desea recibir el valor primitivo de
  • valorDe() devolverá el valor primitivo de OBJ
    • Si no hay un valor primitivo para OBJ , se devolverá el objeto mismo

valorDe() no es algo que deba usar con frecuencia, en todo caso:se llama automáticamente donde se espera el valor primitivo de un objeto.

valueOf() Ejemplos de métodos

Anulación del método valueOf()

Si está trabajando con sus propios objetos personalizados, es posible que desee anular el valor que devuelve valueOf() , por ejemplo, para devolver una representación de cadena de un objeto en un formato específico.

Esto se hace simplemente asignando un nuevo valueOf() función a la clase de objetos:

CLASS.prototype.valueOf = function() 
{ 
    return VALUE; 
};

Tenga en cuenta que:

  • CLASE debe ser el nombre de la clase que desea actualizar valueOf() método para
  • VALOR debe ser el valor que desea devolver cuando valueOf() se invoca para cualquier objeto de la clase dada

Usando valueOf()

En el siguiente ejemplo, se crea un objeto String y se llama a valueOf(), devolviendo el valor de cadena primitivo.

var myString = "hello";
console.log(myString.valueOf()); // Outputs "hello"

Como puede ver, no es tan útil en este contexto; podría haber usado el original myString variable sin valueOf() .

ValorDe y Objetos

Si un objeto no tiene un valor primitivo, se devolverá el objeto mismo:

var myVar = {name: "Jim" , age: 23};
console.log(foo.valueOf()); // Outputs the original object

Si el valueOf() el método se anula, se puede establecer un valor primitivo:

function customClass(name, age) {
    this.name = name;
    this.age = age;
}

customClass.prototype.valueOf = function() {
    return this.name + " is " + this.age;
};

var myVar = new customClass("Jim", 23);
console.log(myVar.valueOf());// Outputs "Jim is 23"

Arriba, valueOf() devuelve una representación de cadena de objetos de customClass, uniendo la información contenida en la clase en una sola cadena. Objetos de customClass ahora tiene un valor primitivo.