1. Conversão de tipo
1.Converter em string
O interessante sobre os valores booleanos, números e primitivas de string do ECMAScript é que eles são pseudoobjetos, o que significa que na verdade possuem propriedades e métodos.
como:
Copie o código do código da seguinte forma:
var sColor = "azul";
alert(sColor.length); // gera "4"
Em resumo, os três principais valores primitivos, valores booleanos, números e strings, todos possuem métodos toString(). Todos os objetos definidos pelo ECMAScript possuem um método toString(), seja ele um pseudo objeto ou um objeto real.
O método booleano toString() apenas gera "true" ou "false", e o resultado é determinado pelo valor da variável:
Copie o código do código da seguinte forma:
var bEncontrado = falso;
alert(bFound.toString()); // gera "false"
O método toString() do tipo Number é especial. Ele possui dois modos, ou seja, o modo padrão e o modo base. Usando o modo padrão, o método toString() usa apenas a string correspondente para gerar o valor numérico (seja ele). um número inteiro, número de ponto flutuante ou método de notação científica).
Copie o código do código da seguinte forma:
var iNum1 = 10;
var fNum2 = 10,0;
alert(iNum1.toString()); //saída "10"
alert(fNum2.toString()); //saída "10"
Usando o modo base do método toString() do tipo Number, os números podem ser gerados em diferentes bases (bases).
Copie o código do código da seguinte forma:
var iNum = 10;
alert(iNum.toString(2)); //saída "1010"
alert(iNum.toString(8)); //saída "12"
alert(iNum.toString(16)); //saída "A"
2. Converta para números
ECMAScript fornece dois métodos para converter valores primitivos não numéricos em números, nomeadamente parseInt() e parseFloat().
Nota: Somente quando esses métodos forem chamados no tipo String (exceto Number), eles serão executados corretamente. Todos os outros tipos retornarão NaN.
Por exemplo:
Copie o código do código da seguinte forma:
var iNum1 = parseInt("1234azul"); //retorna 1234
var iNum2 = parseInt("oxA");
var iNum3 = parseInt("22.5"); //retorna 22
var iNum4 = parseInt("azul"); //retorna NaN
O método parseInt() também possui modo base, que pode converter binário, octal, hexadecimal ou qualquer outra string base em um número inteiro decimal. O segundo parâmetro especifica qual base analisar.
Copie o código do código da seguinte forma:
var iNum1 = parseInt("AF",16);// retorna 175
var iNum2 = parseInt("10",2); // retorna 2
var iNum3 = parseInt("10",8);
var iNum4 = parseInt("10",10); //retorna 10
Nota: Se o número decimal contiver 0s iniciais, é melhor usar a base 10, caso contrário você obterá um valor octal.
Copie o código do código da seguinte forma:
var iNum1 = parseInt("010");
var iNum2 = parseInt("010",8); //retorna 8
var iNum3 = parseInt("010",10); //retorna 10
O método parseFloat() é semelhante ao método parseInt(). Ele analisa cada caractere começando na posição 0 até que o primeiro caractere inválido seja encontrado e, em seguida, converte a string antes do caractere em um número. Para este método, o primeiro ponto decimal é um caractere válido. Se forem utilizadas duas casas decimais, a segunda casa decimal será considerada inválida. Outra diferença na utilização deste método é que a string deve representar um número de ponto flutuante na forma decimal.
Copie o código do código da seguinte forma:
var fNum1 = parseFloat("1234blue"); //retorna 1234.0
var fNum2 = parseFloat("0xA");
var fNum3 = parseFloat("22,5"); //retorna 22,5
var fNum4 = parseFloat("22.34.5"); //retorna 22.34
var fNum5 = parseFloat("0908");//retorna NaN
var fNum6 = parseFloat("azul"); //retorna NaN
3. Conversão de tipo forçada
Os 3 tipos de conversões disponíveis no ECMAScript são os seguintes:
(1).Booleano(valor)
Converta o valor fornecido para o tipo booleano.
A função Boolean() retorna verdadeiro quando o valor a ser convertido é uma string, um número diferente de zero ou um objeto com pelo menos um caractere. Se o valor for uma string vazia, o número 0, indefinido ou nulo, retornará falso.
como:
Copie o código do código da seguinte forma:
var b1 = Boolean("");
var b2 = Boolean("oi"); //verdadeiro
var b3 = Boolean(100); //verdadeiro
var b4 = Boolean(nulo); //falso
var b5 = Boolean(0); //falso
var b6 = Boolean(novo Objeto()); //true
(2).Número(valor)
Converte o valor fornecido em um número (pode ser um número inteiro ou de ponto flutuante).
Lembre-se também que os métodos parseInt() e parseFloat() apenas convertem a string antes do primeiro caractere inválido, portanto “4.5.6” será convertido em “4.5”. A conversão com Number(), "4.5.6" retornará NaN porque o valor inteiro da string não pode ser convertido em um número. Se a string puder ser completamente convertida, Number() determinará se deve chamar o método parseInt() ou o método parseFloat().
como:
Copie o código do código da seguinte forma:
Número(falso); //0
Número(verdadeiro); //1
Número(indefinido);//NaN
Número(nulo); //0
Número("5,5");//5,5
Número("56"); //56
Número("5.6.7");//NaN
Número(novo Objeto()); //NaN
Número(100);//100
(3).String(valor)
Converta o valor fornecido em uma string.
A única diferença de chamar o método toString() é que converter um valor nulo ou indefinido produz uma string sem gerar um erro:
Copie o código do código da seguinte forma:
var s1 = String(nulo);//"nulo"
var oNull = null;
var s2 = oNull.toString();//causa um erro
2. Tipo de referência
Os tipos de referência são geralmente chamados de classes, o que significa que quando um valor de referência é encontrado, o objeto é processado. ECMAScript define "definições de objetos" que são logicamente equivalentes a classes em outras linguagens de programação.
1. Classe de objeto
Todas as classes em ECMAScript são herdadas desta classe e todas as propriedades e métodos da classe Object aparecerão em outras classes (substituídas).
Propriedades da classe Object:
(1).Construtor----Referência (ponteiro) para a função que cria o objeto. Para a classe Object, este ponteiro aponta para a função object() original.
(2).Protótipo----Uma referência ao protótipo do objeto. Para todas as classes, ele retorna uma instância do objeto Object por padrão.
Métodos da classe Object:
(1).HasOwnProperty(property)----Determina se o objeto possui um atributo específico. A propriedade deve ser especificada como uma string (por exemplo: o.hasOwnProperty("name")).
(2).IsPrototypeOf(object)----Determina se o objeto é o protótipo de outro objeto.
(3).PropertyIsEnumerable(property)----Determine se a propriedade fornecida pode ser enumerada usando a instrução for..in.
(4).ToString()----Retorna a representação de string original do objeto. Diferentes implementações de ECMAScript têm valores diferentes.
(5).ValueOf()----Retorna o valor original que melhor se adapta ao objeto. Para muitas classes, o valor retornado por este método é igual ao valor de retorno de toString().
2. Classe booleana
Objetos booleanos raramente são usados em ECMAScript e, mesmo que sejam, não são fáceis de entender.
Por exemplo:
Copie o código do código da seguinte forma:
var oFalseObject = new Boolean(false);
var bResult = oFalseObject && true;//saída true;
Motivo: Nas expressões booleanas, todos os objetos são automaticamente convertidos em verdadeiros.
3. Classe numérica
Valores especiais como Number.MAX_VALUE são propriedades estáticas da classe Number. Para obter o valor original de Number de um objeto numérico, basta usar o método valueOf():
var iNumber = oNumberObject.valueOf();
Além dos métodos padrão herdados da classe Object, a classe Number possui vários métodos especializados para lidar com valores numéricos.
Método toFixed():
Retorna uma representação de string de um número com o número especificado de casas decimais. O método pode representar números com 0 a 20 casas decimais. Valores fora deste intervalo causarão erro.
como:
Copie o código do código da seguinte forma:
var oNumberObject = new Número(99);
aler(oNumberObject.toFixed(2));//saída "99,00"
Método toExponential():
Retorna a representação em string do número em notação científica. Este método também usa um parâmetro que especifica o número de casas decimais a serem geradas. Por exemplo:
Copie o código do código da seguinte forma:
var oNumberObj = novo Número(99);
alert(oNumberObj.toExponential(1));//saída "9.9e+1"
Método toPrecision():
Retorna uma forma predeterminada ou exponencial de um número, dependendo de qual forma faz mais sentido. Possui um argumento, que é o número total de dígitos usados para representar o número (excluindo o expoente).
Copie o código do código da seguinte forma:
var oNumberObj = novo Número(99);
alert(oNumberObj.toPrecision(1));//saída "1e+2" ==100
Como pode ser visto, o método toPrecision() arredonda o número para obter um número o mais próximo possível do valor verdadeiro.
como:
Copie o código do código da seguinte forma:
var oNumberObj = novo Número(99);
alert(oNumberObj.toPrecision(2));// gera "99"
alert(oNumberObj.toPrecision(3));// gera "99,0"
Os métodos toFixed(), toExponential() e toPrecision() executam operações de arredondamento para representar corretamente um número com o número correto de casas decimais.
Método toLocaleString():
Pode ser exibido no formato da página, por exemplo, 5210,50 é exibido como 5.210,50, mas se seu valor for utilizado, deverá ser substituído no formato parseFloat($("N_YJJE").value.replace(// ,/g, "")); Remova a vírgula e obtenha seu valor.
Nota: Semelhante aos objetos booleanos, os objetos numéricos também são importantes, mas devem ser usados com moderação para evitar possíveis problemas. Sempre que possível, use a representação bruta dos números.
4. Classe String
O método valueOf() e o método toString() do objeto String retornam o valor original do tipo String:
Copie o código do código da seguinte forma:
alert(oStringObj.valueOf() == oStringObj.toString());//saída "true"
A classe String possui o atributo length, que é o número de caracteres da string:
Copie o código do código da seguinte forma:
var oStringObj = new String("olá mundo");
alerta (oStringObj.length); saída "11"
Nota: Mesmo que a sequência contenha caracteres de byte duplo, cada caractere conta como apenas um caractere.
Método charAt():
Retorna uma string contendo o caractere na posição especificada:
Copie o código do código da seguinte forma:
var oStringObj = new String("olá mundo");
alert(oStringObj.charAt(1));saída "e"
Método charCodeAt():
Retorna uma string contendo o código do caractere na posição especificada:
Copie o código do código da seguinte forma:
var oStringObj = new String("olá mundo");
alert(oStringObj.charCodeAt(1));saída "101"
Método concat():
Usado para concatenar uma ou mais strings ao valor original de um objeto String. O objeto String original permanece inalterado.
Copie o código do código da seguinte forma:
var oStringObj = new String("olá ");
var sResult = oStringObj.concat("mundo");//oStringObj+"mundo";
alert(sResult); // gera "olá mundo"
alert(oStringObj); // gera "olá"
Os métodos indexOf() e lastIndexOf() retornam a posição da substring especificada em outra string (ou -1, se a substring não for encontrada). A diferença entre esses dois métodos é que indexOf() começa a pesquisar a substring desde o início da string (posição 0), enquanto lastIndexOf() começa a pesquisar a substring a partir do final da string.
localeCompare(), compara strings (compare em ordem alfabética, as últimas são maiores). Este método possui um parâmetro - a string a ser comparada e retorna um dos três valores a seguir:
1. Se o objeto String estiver organizado em ordem alfabética antes da string no parâmetro, um número negativo será retornado (o mais comum é -1, mas o retorno real é determinado pela implementação).
2. Se o objeto String for igual à string do parâmetro, 0 será retornado.
3. Se o objeto String estiver organizado em ordem alfabética após a string no parâmetro, retorne um número positivo (o mais comum é 1, mas o retorno real é determinado pela implementação)
Métodos slice() e substring():
Ambos os métodos retornam substrings da string a ser processada e ambos aceitam um ou dois parâmetros. O primeiro parâmetro é a posição inicial da substring a ser obtida e o segundo parâmetro é a posição antes do final da substring ser obtido (os caracteres na posição terminal não são incluídos no valor retornado). Se o segundo argumento for omitido, o bit de terminação terá como padrão o comprimento da string. Nenhum desses métodos altera o valor do próprio objeto String.
Copie o código do código da seguinte forma:
var oStringObj = new String("olá mundo");
alert(oStringObj.slice(3));//saída "lo world"
alert(oStringObj.slice(3,7));//saída "low"
Nota: Para parâmetros negativos, o método slice() adicionará o comprimento da string ao parâmetro, e o método substring() o tratará como 0 (ou seja, será ignorado).
Copie o código do código da seguinte forma:
var oStringObj = new String("olá mundo");
alert(oStringObj.slice(-3));//saída "rld" é equivalente à busca reversa
alert(oStringObj.substring(-3)); // gera "olá mundo"
alert(oStringObj.slice(3,-4));//saída "low"
alert(oStringObj.substring(3,-4));//saída "hel" substring() sempre usa o número menor como bit inicial e o número maior como bit final.
toLowerCase(), toLocalLowerCase(), toUpperCase() e toLocaleUpperCase():
Os dois primeiros métodos convertem a string em letras minúsculas e os dois últimos métodos são usados para converter a string em letras maiúsculas. Os métodos toLocalLowerCase() e toLocaleUpperCase() são implementados com base em regiões específicas.
Lembre-se: todas as propriedades e métodos da classe String podem ser aplicados a valores primitivos de String porque são pseudoobjetos.
5.operador instanceof
Há um problema ao usar o tipo de referência para armazenar valores ao usar o operador typeof Não importa o tipo de objeto referenciado, ele retorna "objeto". O método instanceof exige que os desenvolvedores confirmem explicitamente que o objeto é de um tipo específico. como:
Copie o código do código da seguinte forma:
var oStrObj = new String("olá mundo");
alert(oStrObj instanceof String); // gera "true"