Pode -se dizer que todos os tipos de dados JS têm os dois métodos: Valueof e ToString, exceto NULL. Ambos resolvem os problemas da operação e exibição do valor de JavaScript. É muito amplamente utilizado em programas. Vamos apresentá -lo a você um por um.
Método ValueOf () de JavaScript
O método ValueOf () retorna o valor original do objeto booleano.
Uso booleanObject.valueof (), retorna o valor booleano original com um valor de booleanObject. Se o objeto que chama o método não for booleano, um tipo de tipo de exceção será lançado.
<script type = "text/javascript"> var boo = new boolean (false); document.write (boo.valueof ()); </script>
O script acima será gerado falso.
Método ToString () de JavaScript
O método tostring () converte um valor lógico em uma string e retorna o resultado.
Uso booleanObject.toString (), o valor de retorno retorna a string "true" ou "false" com base no valor booleano original ou no valor do objeto booleanObject. Se o objeto que chama o método não for booleano, um tipo de tipo de exceção será lançado.
Este método é chamado automaticamente quando um objeto booleano é usado em um ambiente de string.
O script a seguir criará um objeto booleano e o converterá em uma string:
<script type = "text/javascript"> var boo = new boolean (true); document.write (boo.toString ()); </script>
Saída de script: true.
Vamos dar uma olhada em um exemplo:
var aaa = {i: 10, valueof: function () {return this.i+30; }, toString: function () {return this.valueof ()+10; }} alerta (aaa> 20); // Truealert (+AAA); // 40Alert (AAA); // 50Este é o resultado, porque eles secretamente chamam os métodos de valor ou tostragem. Mas como distinguir em que circunstâncias qual método é chamado? Podemos testá -lo através de outro método. Como o console.log é usado, experimente o FF com o Firebug instalado!
var BBB = {i: 10, ToString: function () {console.log ('ToString'); retorne este.i;}, valueof: function () {console.log ('valueof'); retorna this.i;}} alert (bbb); // 10 tostringalerT (+bb); // 10 ValueOfalert (''+BBB); // 10 ValueOfalert (String (BBB)); // 10 ToStringalert (número (BBB)); // 10 ValueOfalert (BBB == '10'); // true ValueOfalert (BBB === '10'); // falseÀ primeira vista, o resultado é aproximadamente o sentimento é que, se for convertido em uma string, o método ValueOf é chamado, mas dois deles são muito dissonantes. Um é alerta (''+bbb), a concatenação da string deve ser chamada de método de tostragem ... outro podemos entender temporariamente que o operador === não executa conversão implícita, para que não sejam chamados. Para buscar a verdade, precisamos de experimentos mais rigorosos.
var aa = {i: 10, tostring: function () {console.log ('tostring'); retorna this.i;}} alert (aa); // 10 tostringalert (+aa); // 10 ToStringalert (''+AA); // 10 ToStringalert (String (AA)); // 10 ToStringalert (número (AA)); // 10 ToStringalert (AA == '10'); // True TostringalertVeja o valor de novamente.
var bb = {i: 10, valueof: function () {console.log ('valueof'); return this.i;}} alert (bb); // [objeto de objeto] alert (+bb); // 10 ValueOfalert (''+BB); // 10 ValueOfalert (String (BB)); // [objeto objeto] alerta (número (bb)); // 10 ValueOfalert (BB == '10'); // True ValueOfEu achei um pouco diferente? ! Não é tão uniforme e regular quanto o toque acima. Para esse [objeto], provavelmente o herdei do objeto, vamos removê -lo e dar uma olhada.
Object.prototype.toString = null; var cc = {i: 10, valueof: function () {console.log ('valueof'); return this.i;}} alert (cc); // 10 valueofalert (+cc); // 10 ValueOfalert (''+CC); // 10 ValueOfalert (String (CC)); // 10 ValueOfalert (Número (CC)); // 10 ValueOfalert (cc == '10'); // True ValueOfSe apenas a ToString for reescrita, a conversão de objetos ignorará a existência do valor do Valueof ao converter. No entanto, se apenas o método ValueOf for reescrito, o método ValueOf terá prioridade ao converter para uma sequência. Se você não puder ligar para a ToString, só pode deixar o valor ir para a batalha. Para esse estranho problema de splicing de cordas, pode ser devido ao operador. Ao abrir o ECMA262-5, você descobrirá que há uma operação GetValue. Bem, então a resposta deve ser revelada. A reescrita aumentará a otimização de suas chamadas e, no caso dos operadores, a prioridade do ValueOf já é maior que a do toque.
O exposto acima é a descrição completa dos métodos ValueOf e ToString no JavaScript introduzido a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!