(E-Book) Apostila de JavaScript PDF
(E-Book) Apostila de JavaScript PDF
Esta obra o resultado da experincia de vrias pessoas, que acreditam que a melhor forma do conhecimento o conhecimento compartilhado. Aqui temos uma pequena referncia a estas pessoas:
http://pt.wikibooks.org/wiki/Javascript
http://pt.wikibooks.org/wiki/Javascript
A verso para este arquivo PDF foi modificada pela ltima vez em 30 de Julho de 2006, modificaes posteriores a esta data no site do Wikibooks no esto inclusas.
Este arquivo PDF foi feito atravs do software OpenOffice.org verso 2.0.3.
NDICE:
Introduo ....................................................4 Tipos de dados..............................................5 Converso de tipos........................................7 Variveis.......................................................8 Definio...........................................8 Escopo da varivel............................9 Constantes.......................................10 Matrizes...........................................11 Nmericas.......................................12 Strings.............................................13 Operadores..................................................14 Fluxo de controle........................................17 Bloco de comandos........................18 If..else.............................................18 While/do..while..............................19 Switch/case.....................................19 For...................................................20 Label...............................................20 Continue..........................................20 Break...............................................21 Throw..............................................21 Try/Catch/Finally............................21. Funes.......................................................23 Objetos........................................................24 Definio........................................25 Propriedades...................................26 Objetos predefinidos......................26 Concluso...................................................42 Referncias na Internet...............................43
INTRODUO
Muito se fala sobre Javascript, porm existe muito pouca documentao em portugus desta linguagem de programao. O maior problema a confuso que se faz entre a linguagem Java e o Javascript com relao a semelhana no nome, na mesma linha de raciocnio fazem a relao de C++ com Java pela semelhana de comandos e sintaxes, embora a implementao de algumas sintaxes e construes sejam parecidas so linguagens distintas, criadas para resolver problemas diferentes, e que por isto possuem capacidades diferentes, o mesmo ocorre com Java e Javascript. Enquanto a Linguagem Java fortemente tipada e possui tipos estticos o Javascript oferece uma reduzida quantidade de tipos, isto , o necessrio para criao de telas dinmicas e certa lgica as pginas html. Javascript pequena, leve, portvel (est presente em quase todos os navegadores e em todas as plataformas que estes navegadores rodam). Ela no uma linguagem para rodar sozinha, precisando de um navegador para tal. Javascript segue uma linha de quanto menor melhor, ou seja, ela pequena na sua escrita, e criao de objetos. Os tipos de variveis so dinmicos, e possui objetos globais j predefinidos conforme o ambiente que se encontra. Inicialmente ela foi criada pela Netscape para ser a linguagem padro no navegador, para produzir certa verificao aos dados. Porm com o passar do tempo, ela foi padronizada pela ECMA(European Computer Manufactures Association) (http://www.ecma-international.org) vide ECMA-262, tambm reconhecida pela ISO ISO-16262. Porm esta padronizao no avanou sobre os objetos pblicos e seus respectivos mtodos, o que torna difcil a padronizao de programas entre navegadores. Aqui ser abordada a a especificao JavaScript 1.5 que segue a ecma262 edio 3.
TIPOS DE DADOS
O Javascript possui poucos tipos de dados, sendo eles:
Numricos:
Este tipo de dado armazena valores, tanto valores inteiros como ponto flutuante, por exemplo: 1 84 2e10 3.141516 0.000001
Os valores numericos podem fazer parte de operaes aritimtica, como a soma, subtrao, multiplicao e diviso. Valores numricos tambm podem fazer parte de operaes aritimticas de bits. Como por exemplo (>>) rotao de bits para direita, (<<) rotao de bits para esquerda, (>>>) rotao de bits a direita sem levar em conta o sinal, (^) OU exclusivo (= XOR), (&) operao E binria (= AND), (|) operao OU binria (= OR), (~) Negao binria (= NOT). Existem vrias funes para manipulao de valores numricos, como funes trigonomtricas, funes de arredondamento e exponenciao, funes de transformao de tipos, etc. Existem alguns valores numricos especiais, so eles :
NaN - Na verdade NaN a abreviao de (Not a Number) = (No um Nmero), ele o resultado geralmente de operaes invlidas com nmeros. Como por exemplo, o resultado da operao (0/0), ir resultar no NaN. Ele tambm uma constante, que pode ser atribuida a uma varivel, como veremos mais adiante. Infinity - Representa um valor infinito, podendo ser tanto positivo quanto negativo. Todas as operaes com valores infinitos resultaro num valor infinito, exceto diviso e subtrao que resultar no NaN.
Lgicos:
Os valores lgicos podem assumir dois valores, true (verdadeiro) e false (falso).
Strings:
So cadeias de caracteres, o maior nmero que uma string pode conter depende do navegador em uso. 5 Contedo disponvel sob GNU Free Documentation License.
Wikibooks, livre pensar e aprender Valores strings so valores delimitados por apstrofo(') ou por aspas("), ex: "texto" ou 'texto' uma barra inversa permite a insero de caracteres especiais, ex: "\b" - Representa o backspace (caracter ascii 8) "\t" - Tabulao (caracter ascii 9) "\r" - Retorno de carro (caracter ascii 13) "\n" - Nova linha (caracter ascii 10) "\v" - Tabulao vertical (caracter ascii 11) "\uNNNN" - Caracter unicode (NNNN representa um valor hexadecimal de 0000 a FFFF) "\xNN" - Caracter ascii (NN representa um valor hexadecimal de 00 a FF) "\'" - Apstrofo "\"" - Aspas "\\" - Barra inversa
Null:
O null um valor especial, representa um objeto nulo, no deve ser confundido com uma varivel no inicializada, pois o valor null existe. Portanto uma varivel com o contedo null existe em memria, referenciando este objeto especial.
Undefined:
O valor undefined significa que a varivel no foi instanciada, inicialmente todas as variveis se encontram neste estado.
CONVERSO DE TIPOS
Atribuindo valores
Diferente da maioria das linguagens o javascript define as variveis dinamicamente, portanto ao atribuir uma varivel ele escolhe o tipo conforme o valor passado para a varivel, no sendo necessrio especificar o mesmo.
var var var var var numero = 1; texto = "Srgio Eduardo Rodrigues"; valor = 123.45; ativo= true; nascimento = new Date(1969,1,4)
Tipo numerica inteira string numerica com ponto flutuante booleana objeto date
Convertendo
Uma varivel pode ser atribuida para outro tipo, ou utilizando uma funo de converso ou ento fazendo operaes aritimticas. Como por exemplo, quando atribuimos ao numero o valor 1, ele se encontra no tipo numrico inteiro, se o dividirmos por 2 ele ir para o tipo numrico ponto flutuante:
numero numero numero outra numero numero = 1; // inteiro 1 = numero / 2; // Vai para flutuante 0.5 = " " + numero; // ele convertido para string, pois est sendo somado string = parseFloat(numero); // Ele ir resultar no nmero 0.5 = parseInt(numero); // Vai para o inteiro 0
VARIVEIS: DEFINIO:
As variveis so representadas por nomes chamados de identificadores, este identificadores tem certa regra para ser montado: 1 Deve iniciar obrigatoriamente por letra ou pelo smbolo _ ou $ 2 A partir da alm de letras, _ e $ pode conter dgitos(0 at 9). voc pode declarar uma varivel de duas formas: 1 Atribuindo diretamente a varivel, exemplo nome="Srgio"; 2 Utilizando a palavra reservada var, exemplo var nome = Srgio Eduardo rodrigues; Uma varivel ou matriz que no tenha sido inicializada, possui o valor de undefined, observe que o Javascript sensvel para case-sensitive, ou seja, letras minsculas e maisculas so diferentes, portanto, undefined e null devem ser escritos sempre em letra minsculas. Se uma varivel declarada apenas, com o comando var, o seu contedo undefined, ou NaN(Not a Number), caso esteja num contexto numrico. Exemplo:
var x; x = x * 2;
VARIVEIS: ESCOPO:
Caso a varivel seja declarada fora do corpo de uma funo ela ser considerada como pblica, ou seja poder ser alcanada por todas as funes, caso ela seja declarada dentro de uma funo ela considerada privada, pois somente pode ser vista pelo cdigo da funo. Exemplo 1(varivel pblica):
var x=10; function fx(){ ... ser possvel utilizar o valor de x ... }function fy() { ... ser possvel utilizar o valor de x ... }
VARIVEIS: CONSTANTES:
So variveis declaradas com a palavra chave const, que no podem sofrer alterao de seu contedo e nem de sua declarao no escopo da rotina. Exemplo:
const fator = 1.34; const nome = Srgio
VARIVEIS: MATRIZES:
So variveis que contm vrias ocorrncias em seu interior. A declarao de uma varivel feita utilizando ou elementos delimitados por colchetes [] ou pelo objeto Array(), exemplo:
var frutas=[laranja, banana, pera]; var nomes=new Array(Srgio, Eduardo,Rodrigues); var valores=[1.34, 10, 50, 13e2]; pode-se utilizar elementos vazios na declarao de uma matriz, por exemplo :
resultado : frutas[0] = "laranja" frutas[1] = "banana" frutas[2] = undefined frutas[3] = "pera" frutas[4] = undefined frutas[5] = undefined frutas[6] = "abacaxi" lembre sempre que as matrizes iniciam pelo elemento zero(0). length um atributo especial que possui a quantidade de elementos da matriz, no uma funo, ou seja se utilizar frutas.length() ele causar erro.
VARIVEIS: NUMRICAS:
Existem duas categorias de nmeros, os de notao de ponto flutuante e os inteiros. Os primeiros representam os valores fracionados, com valores decimais, podem ser expressos como:
01/01/23 1e3 = 1 x 10 = 1000 -3.28e12 = 3.28 x 1012 = 3280000000000 1e-12 = 1 x 10-12 = 0.000000000001
Valores inteiros, podem ser representados em base 10(decimal), 16(hexadecimal) ou 8(octal). Exemplos :
012 igual a 10 decimal, inicia com 0 ele assume que o numero octal 0x12 igual a 18 decimal, inicia com 0x assumido como numero hexadecimal. 12 representa 12 decimal.
VARIVEIS: STRINGS:
So seqncia de caracteres delimitados por () aspas ou (') apstrofe. Exemplos: 'Srgio Eduardo' "um texto qualquer" "vrias linhas:\nSegunda Linha\tMesma linha com tabulao" Ao inicializar uma string pode-se utilizar caracteres especiais, este tem uma barra inversa(\) para indicar que seu significado especial, veja a seguinte tabela \b \t \r \n \v \uNNNN \xNN \0NNN \' \" \\ Representa o backspace (caracter ascii 8) Tabulao (caracter ascii 9) Retorno de carro (caracter ascii 13) Nova linha (caracter ascii 10) Tabulao vertical (caracter ascii 11) Caracter unicode (NNNN representa um valor hexadecimal de 0000 a FFFF) Caracter ascii (NN representa um valor hexadecimal de 00 a FF) Caracter ascii (NN representa um valor octal de 000 a 0377) Apstrofe Aspas Barra inversa
OPERADORES:
Operadores para efetuar mudana do contedo de uma varivel: Operador = ++ -Descrio Atribui valor a uma varivel Incrementa valor de uma varivel, x++ o mesmo que x=x+1 Decrementa valor de uma varivel, x-- o mesmo que x=x-1
Operadores para comparao de valores: Operador == != === !== < <= > >= Igual Diferente Estritamente igual(verifica contedo e tipo da varivel) Estritamente diferente(verifica contedo e tipo da varivel) Menor que Menor ou igual a Maior que Maior ou igual a Descrio
Wikibooks, livre pensar e aprender Operadores lgicos: Operador Descrio && || ! Mdulo Ou No Operadores de bits: Operador & | ^ ~ >> << >>> Operao E Operao Ou Operao Ou Exclusivo Operao No Rotao de bits para direita Rotao de bits para esquerda Rotao de bits para direita sem levar em considerao o sinal Descrio
Operadores especiais: Operador ?: , delete variavel Descrio Efetua operao condicionada, exemplo x = a > 1 ? 3 : 4; ou seja se o valor da varivel a for maior que 1, ser atribudo a x o valor 3 caso contrario 4 A vrgula efetua operao da esquerda para a direita sendo que o ltimo elemento retornado. Ex: x=1, y=2; Elimina um objeto que esteja sendo referenciada pela varivel, se a variavel for uma propriedade de um objeto, limpa esta referncia do objeto.
propriedade in objeto Retorna true caso a propriedade esteja contida no objeto objeto instanceof TipoDoObjeto typeof(objeto) Retorna true caso o objeto seja de determinado tipo Retorna string contendo o tipo do objeto
New Cria uma instncia do objeto TipoDoObjeto(p1, ...) This void (expressao) Representa a instncia do objeto corrente Resolve expresso, porm ignora valor retornado 15
Short Circuit
Operaes lgicas utilizam short circuit da seguinte forma:
true || qualquer coisa = true false && qualquer coisa = false
assim evita erros de diviso por zero. Outro exemplo da utilizao, para contornar a diferena dos eventos do explorer e do mozilla/firefox.
function listener(event) { event = event || window.event; ... }
Assim se esta funo estiver rodando no IE ou num navegador utilizando Gecko ir rodar da mesma forma.
FLUXO DE CONTROLE:
Controlando o que e quando executado um comando, faz parte de todas as linguagens, e o javascript no diferente. Existem vrios comandos, que por isto so tratados como palavras reservadas e portanto no devem ser utilizados como identificadores de variveis ou constantes. So eles:
Bloco de comandos if/then/else while/do..while switch/case for label continue break throw Try/Catch/Finally
} ou {
Note que as trs comparaes sero feitas, independente da execuo, isto uma perda de tempo, pois se de dia no pode ser tarde, neste caso anexamos a estrutura do 'if' o comando 'else' que executa o comando a seguir caso o resultado da expresso lgica seja false, ficando o nosso cdigo assim. 18 Contedo disponvel sob GNU Free Documentation License.
Assim torna mais legvel a o comando executado, sem falar que usando blocos de comandos podemos agrupar mais de um comando.
Igual ao anterior, porm o comando executado pelo menos uma vez, mesmo que condio seja falsa. DO COMANDO; WHILE (CONDIO);
Efetua uma inicializao em seguida executa o comando enquanto a condio for verdadeira, aps a execuo do comando executa a expresso de incremento, ex:
for(var i=0; i < 3; i++) alert(i); equivalente a : var i=0; while (i < 3) { alert(i); i=i+1; }
Wikibooks, livre pensar e aprender Executa comando1 se este lanar uma exceo executa comando 2 em seguida comando3, se comando1 no lanar nenhuma exceo executa comando3; try {
comando1; } catch(e) { comando2; } finally { comando3; }
FUNES:
As funes so declaradas pela palavra reservada function seguido pelo identificador seguido por parmetros delimitados por ( abre parntesis e ) fecha parntesis, e do corpo dela que delimitado por { abre chave e } fecha chave, exemplo :
function quadrado(x) { return x*x; }
Funes Predefinidas Nome atob(base64) Descrio Converte um texto codificado em base64 para binrio. Funo inversa ao btoa(texto) Converte um texto para base64. Funo inversa ao atob(base64). Funo inversa ao encodeURI
btoa(texto) decodeURI(url) decodeURIComponent( Funo inversa ao encodeURIComponent url) isFinite(valor) Identifica se o numero finito. isNaN(valor) Identifica se o valor no um numero como o escape ele faz substituies no texto para compatibilizar encodeURI(url) transferencia em links, mas no faz converso para os caracteres !*()' como o escape ele faz substituies no texto para compatibilizar encodeURIComponent( transferencia em links, mas no faz converso para os caracteres ! url) @#$&*()=:/;?+' Ajusta url para que possa ser passada em chamadas e links, convertendo escape(url) os caracteres especiais para formato hexadecimal e espao para o sinal de +, no faz mudana nos caracteres @*/+ que ficam inalterados Interpreta expresso de JavaScript, ex: eval(expressao) eval(1+2), resultado = 3 parseInt(String) Converte a string num valor inteiro, ou converte uma string na base ou passada para inteiro. parseInt(String, base) Number(objeto) Converte a string num valor ponto flutuante parseFloat(String) Converte a string num valor ponto flutuante String(objeto) Retorna a representao string do objeto unescape(url) Funo inversa ao escape(url)
OBJETOS:
OBJETOS: DEFINIO:
Podem ser declarados com propriedades e valores delimitados por chaves {} ou atravs de funes. Exemplo:
var pessoa={ nome:"Srgio", altura:1.72, nascimento:new Date(1969,1,4) };
ou
function objetoPessoa() { this.nome = Srgio; this.altura = 1.72; this.nascimento = new Date(1969,1,4) } var pessoa = new objetoPessoa();
obs. O parmetro de ms na criao do objeto Date inicia com 0, ou seja 1 significa fevereiro. Para acessar qualquer atributo do objeto, basta informar o nome do objeto seguido por seu atributo aps um ponto(.), exemplo:
alert(pessoa.nome); alert(pessoa.altura); alert(pessoa.nascimento);
pessoa.mostre(); pessoa.nome = eduardo; pessoa.altura = 1.78; pessoa.nascimento = new Date(1975, 6, 25); pessoa.mostre();
OBJETOS: PROPRIEDADES:
Pode-se acrescentar mtodos especiais para tratamento das operaes de get e de set, exemplo:
var conta={ valor:0; set deposito(x) { this.valor += x; }, set saque(x) { this.valor -= x; }, get provisao() { return valor/4; } };
Objeto Array:
Como explicitamente :
var m=new Array(1,2,3,4);
Este objeto manipula uma coleo de outros objetos. Atributos Descrio Quantidade de elementos que tem a length matriz Mtodos Nome Descrio Concatena elementos de duas matrizes, ex:
var m=[sergio, eduardo];
Nome
concat
join
Adiciona elemento a matriz, ex: push var m=[sergio, eduardo]; var n=m.push(rodrigues); n ter valor : rodrigues e m:[sergio, eduardo] Reverte ordem dos elementos da matriz, ex: var m=[sergio,eduardo,rodrigues]; var n=m.reverse();
reverse
n e m tero: [rodrigues, eduardo, rodrigues] Remove o primeiro elemento da matriz, retornando o elemento removido, ex: shift var m=[sergio,eduardo,rodrigues]; var n=m.shift(); n ter valor: sergio m ter valor: [eduardo, rodrigues] Retona uma faixa da matriz, ex: slice(inicio, fim) ou slice(inicio) splice(inicio) Adiciona ou remove faixas dentro de uma matriz, ex: splice(inicio, fim) splice(inicio, fim, item a inserir ...) var m=["a","b", "c","d","e","f","g","h"]; var n=m.slice(0,2); n ter valor: [a,b] m ter valor: ["c","d","e","f","g","h"] var m=["a","b", "c","d","e","f","g","h"]; var n=m.slice(0,2); n ter valor: [a,b]
Ordena a matriz, ex: sort() sort(funcao de comparacao(a, b)) var m=[sergio,eduardo,rodrigues]; var n=m.sort() n ter valor: [eduardo,rodrigues,sergio] No caso de passar a funo de comparao, ela deve retornar menor que zero se a < b, 0 se a=b e maior que zero se a > b Adiciona um ou mais elementos ao inicio da matriz, ex: unshift(item, ...) var m=["sergio", "eduardo", "rodrigues"]; m.unshift("sr"); m ter valor: [sr, "sergio", "eduardo", "rodrigues"]
Objeto Date:
Mtodos Nome Descrio
Construtor: Date(ano, ms) Date(ano, ms, dia) Date(ano, ms, dia, hora) Date(ano, ms, dia, hora, minuto) Date(ano, ms, dia, hora, minuto, segundos) Date(ano, ms, dia, hora, minuto, segundos, milesegundos) Date.UTC(ano, ms) Date.UTC(ano, ms, dia) Date.UTC(ano, ms, dia, hora) Date.UTC(ano, ms, dia, hora, minuto) Date.UTC(ano, ms, dia, hora, minuto, segundos) Date.UTC(ano, ms, dia, hora, minuto, segundos, milesegundos) Date.parse(texto) Converte a data para um objeto date, o formato o mesmo utilizado no toString() Retorna um objeto date representando o momento, o mesmo que Date.now() new Date(), porm retorna no um objeto, porm um nmero. Retorna o dia Contedo disponvel sob GNU Free Documentation License. Cria tempo relativo ao UTC. Da mesma forma que o contrutor apenas que o ms janeiro representado por 0 e no por 1. Todos os parmetros so opcionais. Lembre-se
getDate()
Retorna o dia da semana Retorna um inteiro com o valor do ano Retorna hora Retorna os milisegundos Retorna os minutos Retorna o ms, janeiro = 0 Retorna os segundos Numero de milisegundos representando a data Retorna a diferena em minutos do horario local e o UTC Retorna o dia UTC Retorna o dia da semana UTC Retorna o ano UTC Retorna a hora UTC Milissegundos UTC Retorna os minutos UTC Retorna o ms UTC Retorna os segundos Retorna o ano menos 1900, ex: 2004 retorna 104, pois 2004 = 104 + 1900 Atribui minutos
getTimezoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() getYear() objDate.setMinutes(minutos)
objDate.setMinutes(minutos, segundo) setMinutes(minutos, segundo, milessegundo) objDate.setUTCHours(hora, minuto, segundo, Atribui hora UTC milesegundo) setDate(dia) setFullYear(ano) setFullYear(ano, ms) setFullYear(ano, ms, dia) setHours(hora) setHours(hora, minuto) Atribui hora setHours(hora, minuto, segundo) setHours(hora, minuto, segundo, milesegundo) setMilliseconds(milisegundos) setMonth(mes) Atribui ms setMonth(mes, dia) setSeconds(segundos) Atribui segundos setSeconds(segundos, milesegundo) setTime(milisegundos) setUTCDate(dia) setUTCFullYear(ano) setUTCFullYear(ano, ms) setUTCFullYear(ano, ms, dia) setUTCMilliseconds(milisegundos) Atribui milisegundos UTC Atribui ano UTC Milisegundos da data Atribui dia do ms UTC Atribui milisegundos Atribui ano Atribui dia do ms
setUTCMinutes(minutos) setUTCMinutes(minutos, segundo) setUTCMinutes(minutos, segundo, milisegundo) setUTCMonth(mes) Atribui ms UTC setUTCMonth(mes, dia) setUTCSeconds(segundos) Atribui segundos UTC setUTCSeconds(segundos, milesegundo) setYear(ano) setYear(ano, ms) setYear(ano, ms, dia) toLocaleDateString() toLocaleTimeString() toUTCString() Converte para string apenas a parte da data Converte para string apenas a parte da hora Converte para string UTC Atribui ano, numero que menos 1900 do ano atual Atribui minutos UTC
Objeto Math:
Atributos
Descrio E valor da constante e (2.718281828459045) LN10 logartimo natural de 10 (2.302585092994046) LN2 logartimo natural de 2 (0.6931471805599453) LOG2E logartimo de e na base 2 (1.4426950408889634) logartimo de e na base LOG10E 10(0.4342944819032518) PI valor do pi (3.141592653589793) SQRT1_2 raiz quadrada de 1/2 (0.7071067811865476) SQRT2 raiz quadrada de 2(1.4142135623730951) 32 Contedo disponvel sob GNU Free Documentation License.
Nome
Mtodos Nome abs(v) acos(v) asin(v) atan(v) atan2(y, x) ceil(v) cos(v) exp(v) floor(v) log(v) max(valor ...) min(valor ...) pow(x, y) ramdom() round(v) sin(v) sqrt(v) tan(v) Descrio valor absoluto de v arcocosseno de v arcoseno de v arcotangente de v arcotangente de y/x prximo valor inteiro superior a v cosseno de v e elevado a v prximo valor inteiro inferior a v logartimo de v na base 10 maior valor da lista menor valor da lista x elevado a y numero randomico de >= 0 e < 1 arredondamento de v seno de v raiz quadrada de v tangente de v
Objeto String:
Atributos
Mtodos Nome escape(string) unescape(string) Descrio mesmo que encodeURI mesmo que decodeURI Contedo disponvel sob GNU Free Documentation License.
encodeURI(string) decodeURI(string)
Codificao necessria para passar tring como parametro de URI Decodificao necessria de string recebida por parametro URI
decodeURIComponent(string) Decodifica toda a URI passada encodeURIComponent(string) Codifica toda a URI passada anchor(nome) new String(sergio).anchor(n); retorna: <a name=n>sergio</a> new String(sergio).big(); retorna: <big>sergio</big> new String(sergio).blink(); retorna: <blink>sergio</blink> new String(sergio).bold(); retorna: <b>sergio</b> o mesmo que substring(posicao, posicao+1), retorna um caractere da string. Valor unicode do caracter da posio. Concatena itens fornecidos a string. new String(sergio).fixed(); retorna: <tt>sergio</tt> new String("teste").fontcolor("blue"), retorna: <font color="blue">teste</font> new String("teste").fontsize(16), retorna: <font size="16">teste</font>
big()
blink()
bold()
fontcolor(cor)
new String(sergio).italics(),
retorna: <i>sergio</i> lastIndexOf(substring) lastIndexOf(substring, posioInicial) Procura a ultima ocorrncia da substring dentro da string.
Compara outra string com a string e retorna: localeCompare(outraString) negativo se string < outraString 0 se for igual positivo se string > outraString retorna posio encontrada segundo expresso regular troca onde localizar valorBusca por replace(valorBusca, valorSubstituio) valorSubstituio, o valor de busca pode tanto ser uma string, como uma expresso regular, se for uma string somente a primeira ocorrncia ser substrituida. procura por valorBusca
match(regexp)
search(valorBusca) slice(inicio)
substring do inicio at o fim, fim no incluso, slice(inicio, fim) small() new String("teste").small(); retorna: <small>teste</small> new String("Sergio Eduardo Rodrigues").split(" "); retorna: [Sergio, Eduardo, Rodrigues] new String("teste").strike(); retorna: <strike>teste</strike> new String("teste").sub(); retorna: <sub>teste</sub> Retorna a substring da posio inicial, com substr(posicao, quantidade) tamanho fornecido pela quantidade. a posio pode ser negativo, indicando relativo ao final da string. Substring da posio inicial at
split()
strike()
sub()
substring(posioInicial)
substring(posioInicial, posioFinal)
posio final, posio final no inclusa. se a posio final no for fornecida, ser retornado a string da posio inicial at fim da string new String("teste").sup(); retorna: <sup>teste</sup> Converte para minusculo Converte para maiusculo Converte para minusculo Converte para maiusculo
Objeto Number:
Mtodos Nome Number(numero) toString() Descrio Construtor Converte para string decimal ou na base fornecida
toString(base) toLocaleString() valueOf() toFixed(decimais) Converte para string na localidade atual Converte de um objeto para number Retorna string com numero formatado contendo decimais casas.
toExponential(decimais Retorna string notao exponencial com decimais dgitos ) toPresision(decimais) Formata numero de dgitos
Objeto XMLHttpRequest:
Com o advento do AJAX, este objeto se torna cada vez mais importante. Ele, infelizmente, no padronizado, e portanto, at que saia uma resoluo, devemos sempre fazer checagem para criao deste objeto, a seguir apresento a sua estrutura, e em seguida uma pequena rotina para criao e manipulao do mesmo. Atributos Nome Descrio Representa o estado do objeto, pode ser :
* * * * * 0 1 2 3 4 nao inicializado (uninitalized) carregando (loading) carregado (loaded) interativo (interactive) completo (complete)
readyState
Resposta em xml (document) Resposta em texto Valor numero de retorno Texto de status Indica que esta recebendo um texto multipart
getAllResponseReaders() getResponseReader(name) open("metodo", "url"[, indicadorDeAssincrono[, nomeUsuario [, senha]]]) send(content) setRequestHeader("nome", "valor") overrideMimeType("mime-type")
Retorna nomes dos cabealhos Retorna valor do cabealho Abre comunicao Envia contedo Atribui dados a cabealho antes do envio sobre escreve o tipo retornado
Eventos Descrio Event listener que recebe event como parametro, assim pode-se receber onload elementos como resposta onerror Evento chamado caso ocorra um erro na carga Evento chamado durante a carga, caso seja um conteudo muito grande para onprogress baixar. onreadystatechange Evento chamado quando o estado da carga muda.
Nome
Exemplo de Uso:
Salve este cdigo como request.js var RequestObject; function initRequest(newRequestFunc, noBody) { var _newRequest = newRequestFunc; var _noBody = noBody; var _id = 0; return function() { this.newRequest = _newRequest; this.concatTimer = function(url, id) { return url + (url.indexOf("?") < 0 ? "?" : "&")+ "requestTime=" + new Date().getTime() + "&requestId=" + id; } this.loadText = function(url, method) { var req = _newRequest(); req.open(method || "GET", this.concatTimer(url, _id++), false); if (_noBody) req.send(); else req.send(null); return req.responseText; } this.splitLines = function(text) {
try {
} this.loadLines = function(url, method) { return this.splitLines(this.loadText(url, method || "GET")); } this.loadXML = function(url, method) { var req = _newRequest(); req.open(method || "GET", this.concatTimer(url, _id++), if (_noBody) req.send(); else req.send(null); return req.responseXML;
false);
} this.bind = function(object) { var url = object['url']; if (typeof url == 'undefined') throw "necess?rio URL para fazer bind"; var id = _id++; var req = _newRequest(); var method = object['method'] || "GET"; var headers = object['header']; var body = object['body']; var user = object['username']; var pass = object['password']; var onload = object['onload']; var onerror = object['onerror']; var onprocess = object['onprocess']; var onstatechange = object['onstatechange']; req.onreadystatechange=function() { if (onstatechange) onstatechange(req, id); switch(req.readyState) { case 0: // UNINITIALIZED open() no foi break; case 1: // LOADING send() no foi chamado ainda disponvel getResponseHeader e status responseText tem dados parciais case 2: // LOADED send() foi chamado, case 3: // INTERACTIVE carregando, if (onprocess) onprocess(req, id); break; case 4: // COMPLETED, todas as operaes if (onprocess) onprocess(req, id); if (req.status == 0 || if (onload) onload(req, id); } else {
chamado ainda
foram concluidas
req.status == 200) {
} } if (user) req.open(method, this.concatTimer(url, id), else req.open(method, this.concatTimer(url, id)); req.setRequestHeader('requestid', id); for(var header in headers) { req.setRequestHeader(header, headers[header]); } try { if (body && _noBody) { req.send(); } else { req.send(body); } } catch(e) { if (onerror) { onerror(req, id, e); } }
} } }
if (window.ActiveXObject) { var objectNames = [ "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ]; for(var i=0; i < objectNames.length; i++) { try { var requestName = objectNames[i]; new ActiveXObject(requestName); RequestObject = initRequest(function() { return new ActiveXObject(requestName); }, true); } catch(e) { } } } if (! RequestObject && window.XMLHttpRequest) { try { new XMLHttpRequest(); RequestObject = initRequest(function() { return new XMLHttpRequest(); }, false); } catch(e) { } } if (! RequestObject) { alert("Seu browser no esta preparado para o ajax");
} Inclua na pgina, o seguinte comando para incluir este arquivo : <script type="text/javascript" src="request.js"></script>
em seguida, voc pode utilizar o cdigo, como por exemplo, carregando um texto de forma sincna : var req = new RequestObject(); alert(req.loadText("textoqualer.txt")); podemos tambm carregar numa matriz e processar linha a linha: var req = new RequestObject(); var matriz = req.loadLines("textoqualer.txt"); for(var i=0; i < matriz.length; i++) { alert(i + ":" + matriz[i]); }
tambm possvel carregar de forma assincrona : var req = new RequestObject(); req.bind({ url:"textoqualquer.txt", onload:function(rq, id) { alert(rq.responseText); } }); possvel tambm verificar se ocorreu algum erro, da seguinte forma : var req = new RequestObject(); req.bind({ url:"textoqualquer.txt", onload:function(rq, id) { alert(rq.responseText); }, onerror:function(rq, id, msg) { alert('erro = ' + msg); } });
Outros Objetos:
Para referncias de outros objetos como DOM (Document Object Model), HTML e SVG, visite o captulo on-line deste livro no site: http://pt.wikibooks.org/wiki/Javascript:_Objetos
41
CONCLUSO:
Espero ter dado uma pequena contribuio para a disseminao desta linguagem script, e possa tornar a vida mais fcil para programadores que necessitam tornar suas pginas mais inteligentes.
REFERNCIAS NA INTERNET:
Definio do Javascript - Definio do javascript pela ecma, orgo europeu de padronizao. Javascript projeto Mozilla - Referncia a tecnologia javascript pelo projeto Mozilla. Definio XMLHttpRequest - Definio de XMLHttpRequest pelo Mozilla. Javascript Microsoft - Pgina inicial de javascript na MSDN Tutorial de JavaScript - em Portugus e Ingls JScript - Verso da Microsoft do JavaScript, usado no Internet Explorer (Em Ingls).
JavaScript - Pgina de JavaScript da fundao Mozilla (Em Ingls). Standard ECMA-262 - Especificao oficial do JavaScript (Em Ingls). Exemplos do Javascript - no espanhol. Guia Javascript da fundao Mozilla um bom guia de javascript em Ingls Programao baseada em classe vs. Programao baseada em prottipo essencial para quem est acostumado com o paradigma da programao orientada a objeto, o texto est em Ingls. Artigo Javascript pela Wikipdia.