Se puede decir que todos los tipos de datos JS tienen los dos métodos: ValorOf y ToString, excepto NULL. Ambos resuelven los problemas de la operación y la pantalla de valor de JavaScript. Se usa muy ampliamente en los programas. Vamos a presentarlo uno por uno.
Método Value de JavaScript ()
El método ValueOf () devuelve el valor original del objeto booleano.
Uso booleanObject.ValueOf (), devuelve el valor booleano original con un valor de booleanObject. Si el objeto que llama al método no es un booleano, se lanza una excepción typeError.
<script type = "text/javaScript"> var boo = new Boolean (false); document.write (boo.valueOf ()); </script>
El script anterior emitirá falso.
Método ToString () de JavaScript
El método toString () convierte un valor lógico en una cadena y devuelve el resultado.
Uso booleanObject.ToString (), el valor de retorno devuelve la cadena "verdadera" o "falsa" basada en el valor booleano original o el valor del objeto booleanObject. Si el objeto que llama al método no es un booleano, se lanza una excepción typeError.
Este método se llama automáticamente cuando se usa un objeto booleano en un entorno de cadena.
El siguiente script creará un objeto booleano y lo convertirá en una cadena:
<script type = "text/javaScript"> var boo = new Boolean (true); document.write (boo.ToString ()); </script>
Salida del script: Verdadero.
Echemos un vistazo a un ejemplo:
var aaa = {i: 10, valorf: function () {return this.i+30; }, toString: function () {return this.ValueOf ()+10; }} alerta (aaa> 20); // TRUEALERT (+AAA); // 40Alert (AAA); // 50Este es el resultado porque secretamente llaman al valor de los métodos de valor o tostración. Pero, ¿cómo distinguir en qué circunstancias se llama? Podemos probarlo a través de otro método. Dado que se usa console.log, ¡experimente en FF con Firebug instalado!
var bbb = {i: 10, toString: function () {console.log ('toString'); return this.i;}, valueOf: function () {console.log ('valueOf'); return this.i;}} alert (bbb); // 10 toStringalert (+bbb); // 10 valueOfalert (''+bbb); // 10 ValueOfalert (String (BBB)); // 10 toStringAlert (número (BBB)); // 10 valueOfalert (bbb == '10'); // verdadero valorofalert (bbb === '10'); // FALSOA primera vista, el resultado es más o menos la sensación es que si se convierte en una cadena, se llama el valor del método, pero dos de ellos son muy disonantes. Uno es alerta (''+bbb), la concatenación de cadena debe llamarse método de toString ... otro podemos comprender temporalmente que el operador === no realiza una conversión implícita, por lo que no se les llama. Para buscar la verdad, necesitamos experimentos más rigurosos.
var aa = {i: 10, toString: function () {console.log ('toString'); devuelve this.i;}} alert (aa); // 10 toStringAlert (+aa); // 10 toStringAlert (''+aa); // 10 toStringAlert (string (aa)); // 10 toStringAlert (número (aa)); // 10 toStringAlert (aa == '10'); // verdadero tostringalertMira el valor de nuevo.
var bb = {i: 10, valueOf: function () {console.log ('valueOf'); return this.i;}} alert (bb); // [objeto objeto] alert (+bb); // 10 valueOfalert (''+bb); // 10 ValueOfalert (String (BB)); // [objeto objeto] alerta (número (bb)); // 10 valueOfalert (bb == '10'); // Valor verdadero¿Lo encontré un poco diferente? ! No es tan uniforme y regular como la tostración anterior. Para ese [objeto de objeto], probablemente lo heredé del objeto, lo eliminemos y echemos un vistazo.
Objeto.prototype.ToString = null; var cc = {i: 10, valueOf: function () {console.log ('valueOf'); devuelve this.i;}} alert (cc); // 10 valueOfalert (+cc); // 10 valueOfalert (''+cc); // 10 ValueOfalert (String (CC)); // 10 ValueOfalert (número (CC)); // 10 valueOfalert (cc == '10'); // Valor verdaderoSi solo se reescribe tostring, la conversión de objetos ignorará la existencia de valor al convertir. Sin embargo, si solo se reescribe el método ValueOf, el método ValueOF recibirá prioridad al convertir a una cadena. Si no puede llamar a ToString, solo puede dejar que Value de vaya a la batalla. Para ese extraño problema de empalme de cadena, puede deberse al operador. Cuando abra ECMA262-5, encontrará que hay una operación GetValue. Bueno, entonces la respuesta debe revelarse. La reescritura aumentará la optimización de sus llamadas, y en el caso de los operadores, la prioridad del valor ya es más alta que la de la tostración.
Lo anterior es la descripción completa de los métodos de valor y toString en JavaScript presentados por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!