Você está na página 1de 43

Livro escrito no Wikibooks em lngua portuguesa, livre pensar e aprender.

1
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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:

Srgio Eduardo Rodrigues


Lightningpirit

Este livro est para download livre e gratuito neste endereo:

http://pt.wikibooks.org/wiki/Javascript

A verso on-line e em contnuo desenvolvimento est nesse endereo:

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.

2
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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

3
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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.

Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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.

6
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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)

Nome
numero
texto
valor
ativo
nascimento

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

7
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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;

o resultado ser NaN.


ou se for utilizado
x = x + teste

causar um erro de execuo, pois x no tem valor definido.

8
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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 ...
}

Exemplo 2 (varivel privada):


function fx() {
var x = 5;
... ser possvel utilizar o valor de x ...
}
function fy() {
... x ter valor undefined, ou seja no ser visto por fy ...
}

9
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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

se tentar efetuar uma redeclarao ocorrer um erro de execuo, exemplo:


const fator = 1.34;
var fator = 22;

ou ento se este j tiver sido declarado


function funcao() {}
const funcao=teste;

10
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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 :

var var frutas=["laranja","banana",,"pera",,,"abacaxi"];

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.

11
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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.

12
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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

13
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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

Descrio

==

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

Operadores aritimticos:
Operador

Descrio

Mdulo

Soma

Subtrao

Multiplicao

Diviso

14
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender


Operadores lgicos:
Operador Descrio
&&

Mdulo

||

Ou

No
Operadores de bits:

Operador

Descrio

&

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

Operadores especiais:
Operador

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;

delete variavel

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

Retorna true caso o objeto seja de determinado tipo

typeof(objeto)

Retorna string contendo o tipo do objeto

New
Cria uma instncia do objeto
TipoDoObjeto(p1, ...)
This

Representa a instncia do objeto corrente

void (expressao)

Resolve expresso, porm ignora valor retornado


15

Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

Short Circuit
Operaes lgicas utilizam short circuit da seguinte forma:
true || qualquer coisa = true
false && qualquer coisa = false

assim possvel por exemplo fazer a seguinte operao:


if (a != 0 && 1/a > 0.5) {
....
}

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.

16
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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

17
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

FLUXO DE CONTROLE: BLOCO DE COMANDOS:


No Javascript, o bloco de comandos uma estrutura para agrupar outros comandos.
O bloco de comando comea pelo abre chave "{" e finaliza com o fecha chave "}", o ultimo
elemento no necessriamente necessita de finalizar com ponto e virgula ";", mas se terminar no
ter problemas, este ultimo ponto e virgula opcional.
{

}
ou
{

comando;
comando;
...
comando

comando;
comando;
...
comando;

FLUXO DE CONTROLE: COMANDO IF..ELSE:


Talvez um dos comandos mais utilizados em todas as linguagens de programao, o 'if' um
comando utilizado para tomar a deciso de executar o prximo comando baseado numa espresso
lgica, se esta expresso for verdadeira o prximo comando executado, caso contrrio ele
ignorado.
Por exemplo, se for necessrio dar um alerta ao usurio, conforme a hora, podemos fazer o
seguinte:
var hora = new Date().getHours();
if (hora < 12)
alert("bom dia");
if (hora >= 12 && hora < 18)
alert("boa tarde");
if (hora >= 18)
alert("boa noite");

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.

Wikibooks, livre pensar e aprender


var hora = new Date().getHours();
if (hora < 12)
alert("bom dia");
else if (hora >= 12 && hora < 18)
alert("boa tarde");
else
alert("boa noite");

Para tornar mais legvel podemos escrever da seguinte forma:


var hora = new Date().getHours();
if (hora < 12) {
alert("bom dia");
} else {
if (hora >= 12 && hora < 18) {
alert("boa tarde");
} else {
alert("boa noite");
}
}

Assim torna mais legvel a o comando executado, sem falar que usando blocos de comandos
podemos agrupar mais de um comando.

FLUXO DE CONTROLE: COMANDO WHILE:

Executa comando enquanto condio resultar em verdadeiro:


WHILE (CONDIO)
COMANDO;

Igual ao anterior, porm o comando executado pelo menos uma vez, mesmo que condio
seja falsa.
DO
COMANDO;
WHILE (CONDIO);

FLUXO DE CONTROLE: COMANDO SWITCH:


Se o contedo da varivel for igual a constante1 ou constante2 ser executado o comando1;
se for igual a constante 3 ser executado o comando 2; caso contrrio ser executado o comando 3;
note que o comando break fora o fluxo sair fora do comando switch.
19
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender


switch(varivel) {
case constante1:
case constante2:
comando1;
break;
case constante3:
comando2;
break;
default:
comando3;
}

FLUXO DE CONTROLE: COMANDO FOR:


for(inicializao; condio; incremento) comando;

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;
}

FLUXO DE CONTROLE: COMANDO LABEL:


Label:
Label permite que a indicao de uma posio que pode ser utilizado com continue e break
para salto dentro de um loop.

FLUXO DE CONTROLE: COMANDO CONTINUE:


Continue; e Continue label;
Salta para loop ou para loop que est aps label indicado.

20
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

FLUXO DE CONTROLE: COMANDO BREAK:


Break; e Break label;
Sai fora do loop corrente ou do loop que esta aps label informado.

FLUXO DE CONTROLE: COMANDO THROW:


throw expresso;
Lana exceo.

FLUXO DE CONTROLE: COMANDO TRY:


Captura qualquer erro que comando lance ou captura excees conforme expresso.
No primeiro caso comando2 ser executado caso comando1 lance uma exceo.
No segundo caso o comando3 ser executado caso a exceo lanada pelo comando1 seja
igual a expresso1, se for igual a expresso2 o comando 4 ser executado, se for lanado uma
exceo que no seja igual nem a expresso 1 e nem a expresso 2 ser executado o comando2;
try {
comando1;
} catch(e) {
comando2;
}
ou
try {
comando1;
} catch(e if e==expressao1) {
comando3;
} catch(e if e== expresso2) {
comando4;
} catch(e) {
comando2;

21
Contedo disponvel sob GNU Free Documentation License.

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;
}

22
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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)

23
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

OBJETOS:

Definio
Propriedades
Objetos predefinidos

24
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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);

Tambm pode-se atribuir mtodos a objetos, da seguinte forma :


function mostrePessoa() {
alert(this.nome + \n + this.altura + \n + this.nascimento);
}
var pessoa={
nome:"Sergio",
altura:1.72,
nascimento:new Date(1969,1,4),
mostre:mostrePessoa
};

pessoa.mostre();
pessoa.nome = eduardo;
pessoa.altura = 1.78;
pessoa.nascimento = new Date(1975, 6, 25);
pessoa.mostre();

25
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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;
}
};

conta.deposito = 100;
conta.saque = 50;
alert(proviso = + conta.provisao + \n saldo = + conta.valor);

OBJETOS: OBJETOS PREDEFINIDOS:


Existem uma serie de objetos que j esto definidos para o desenvolvedor, este objetos so
largamente utilizados na linguagem, e so fundamentais para interao com os sistemas.
Os principais so:

Objeto Array:

Definio
O Objeto Array(matriz), pode ser tanto criado implicitamente :
var m=[1,2,3,4];

Como explicitamente :
var m=new Array(1,2,3,4);

26
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

Este objeto manipula uma coleo de outros objetos.


Atributos
Nome

Descrio
Quantidade de elementos que tem a
length
matriz
Mtodos
Nome

Descrio
Concatena elementos de duas matrizes, ex:
var m=[sergio, eduardo];

concat

var n=m.concat(rodrigues);
n ter valor : [sergio, eduardo, rodrigues]

Junta elementos aos da matriz, ex:


var m=[sergio, eduardo, rodrigues];

join

var n=m.join(+ );
n ter valor : sergio+ eduardo+ rodrigues

Remove o ultimo elemento da matriz, retornando o elemento removido, ex:


pop

var m=[sergio, eduardo, rodrigues];


var n=m.pop();
n ter valor : rodrigues e m:[sergio, eduardo]

Adiciona elemento a matriz, ex:


push

reverse

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();

Contedo disponvel sob GNU Free Documentation License.

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)

var m=["a","b", "c","d","e","f","g","h"];


var n=m.slice(0,2);
n ter valor: [a,b]

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"]

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"]

28
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

Objeto Date:
Mtodos
Nome

Descrio

Construtor:
Date(ano, ms)
Date(ano, ms, dia)

Todos os parmetros so opcionais.


Lembre-se

Date(ano, ms, dia, hora)


Date(ano, ms, dia, hora, minuto)

apenas que o ms janeiro representado


por 0 e no

Date(ano, ms, dia, hora, minuto, segundos)

por 1.

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)

Cria tempo relativo ao UTC. Da mesma


forma que o contrutor

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()

getDate()

new Date(), porm retorna no um objeto,


porm um
nmero.
Retorna o dia
Contedo disponvel sob GNU Free Documentation License.

getDay()

Retorna o dia da semana

getFullYear()

Retorna um inteiro com o valor do ano

getHours()

Retorna hora

getMilliseconds()

Retorna os milisegundos

getMinutes()

Retorna os minutos

getMonth()

Retorna o ms, janeiro = 0

getSeconds()

Retorna os segundos

getTime()

Numero de milisegundos representando a


data

getTimezoneOffset()

Retorna a diferena em minutos do horario


local e o UTC

getUTCDate()

Retorna o dia UTC

getUTCDay()

Retorna o dia da semana UTC

getUTCFullYear()

Retorna o ano UTC

getUTCHours()

Retorna a hora UTC

getUTCMilliseconds()

Milissegundos UTC

getUTCMinutes()

Retorna os minutos UTC

getUTCMonth()

Retorna o ms UTC

getUTCSeconds()

Retorna os segundos

getYear()

Retorna o ano menos 1900, ex: 2004


retorna 104, pois 2004 = 104 + 1900

objDate.setMinutes(minutos)

Atribui minutos

Contedo disponvel sob GNU Free Documentation License.

objDate.setMinutes(minutos, segundo)
setMinutes(minutos, segundo, milessegundo)
objDate.setUTCHours(hora, minuto, segundo,
Atribui hora UTC
milesegundo)
setDate(dia)

Atribui dia do ms

setFullYear(ano)
setFullYear(ano, ms)

Atribui ano

setFullYear(ano, ms, dia)


setHours(hora)
setHours(hora, minuto)
Atribui hora
setHours(hora, minuto, segundo)
setHours(hora, minuto, segundo, milesegundo)
setMilliseconds(milisegundos)

Atribui milisegundos

setMonth(mes)
Atribui ms
setMonth(mes, dia)
setSeconds(segundos)
Atribui segundos
setSeconds(segundos, milesegundo)
setTime(milisegundos)

Milisegundos da data

setUTCDate(dia)

Atribui dia do ms UTC

setUTCFullYear(ano)
setUTCFullYear(ano, ms)

Atribui ano UTC

setUTCFullYear(ano, ms, dia)


setUTCMilliseconds(milisegundos)

Atribui milisegundos UTC

Contedo disponvel sob GNU Free Documentation License.

setUTCMinutes(minutos)
setUTCMinutes(minutos, segundo)

Atribui minutos UTC

setUTCMinutes(minutos, segundo, milisegundo)


setUTCMonth(mes)
Atribui ms UTC
setUTCMonth(mes, dia)
setUTCSeconds(segundos)
Atribui segundos UTC
setUTCSeconds(segundos, milesegundo)
setYear(ano)
Atribui ano, numero que menos 1900 do
ano atual

setYear(ano, ms)
setYear(ano, ms, dia)
toLocaleDateString()

Converte para string apenas a parte da data

toLocaleTimeString()

Converte para string apenas a parte da hora

toUTCString()

Converte para string UTC

Objeto Math:
Atributos

Nome

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.

Wikibooks, livre pensar e aprender

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

Nome
Descrio
length Tamanho da string

Mtodos
Nome
escape(string)

Descrio
mesmo que encodeURI

unescape(string)

mesmo que decodeURI


Contedo disponvel sob GNU Free Documentation License.

encodeURI(string)

Codificao necessria para passar tring como parametro de URI

decodeURI(string)

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>

big()

new String(sergio).big();
retorna: <big>sergio</big>

blink()

new String(sergio).blink();
retorna: <blink>sergio</blink>

bold()

new String(sergio).bold();
retorna: <b>sergio</b>

charAt(posicao)

o mesmo que substring(posicao, posicao+1), retorna um caractere


da string.

charCodeAt(posicao)

Valor unicode do caracter da posio.

concat(item ...)

Concatena itens fornecidos a string.

fixed()

new String(sergio).fixed();
retorna: <tt>sergio</tt>

fontcolor(cor)

new String("teste").fontcolor("blue"),
retorna: <font color="blue">teste</font>

fontsize(tamanho)

new String("teste").fontsize(16),
retorna: <font size="16">teste</font>

indexOf(substring)
indexOf(substring,
posioInicial)
italics()

Procura a ocorrencia da substring dentro da string

new String(sergio).italics(),

Contedo disponvel sob GNU Free Documentation License.

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

match(regexp)

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

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>

split()

new String("Sergio Eduardo


Rodrigues").split(" ");
retorna: [Sergio, Eduardo, Rodrigues]

strike()

new String("teste").strike();
retorna: <strike>teste</strike>

sub()

new String("teste").sub();
retorna: <sub>teste</sub>
Retorna a substring da posio inicial, com

substr(posicao, quantidade)

substring(posioInicial)

tamanho fornecido pela quantidade. a posio pode ser


negativo, indicando relativo ao final da string.
Substring da posio inicial at

Contedo disponvel sob GNU Free Documentation License.

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>

sup()
toLocaleLowerCase()

Converte para minusculo

toLocaleUpperCase()

Converte para maiusculo

toLowerCase()

Converte para minusculo

toUpperCase()

Converte para maiusculo

<mtodo esttico>
retorna o caracter representado pelo indice unicode <numero>
fromCharCode(numero)

Objeto Number:

Atributos
Nome
NaN

Descrio
Representa valores que no so considerados
nmeros

NEGATIVE_INFINITY Valor infinito negativo


POSITIVE_INFINITY Valor infinito positivo

Mtodos
Nome
Number(numero)

Descrio
Construtor

toString()

Converte para string decimal ou na base fornecida

Contedo disponvel sob GNU Free Documentation License.

toString(base)
toLocaleString()

Converte para string na localidade atual

valueOf()

Converte de um objeto para number

toFixed(decimais)

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

readyState

responseXML
responseText
status
statusText
multipart

Descrio
Representa o estado do objeto, pode ser :
*
*
*
*
*

0
1
2
3
4

nao inicializado (uninitalized)


carregando (loading)
carregado (loaded)
interativo (interactive)
completo (complete)

Resposta em xml (document)


Resposta em texto
Valor numero de retorno
Texto de status
Indica que esta recebendo um texto multipart

Mtodos
Nome
stop()

Descrio
Pra a transferncia

Contedo disponvel sob GNU Free Documentation License.

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
Nome

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.

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) {

Contedo disponvel sob GNU Free Documentation License.

try {

return text.split(/\r?\n|\r/);
} catch(e) {
return [];
}

}
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++),

false);

if (_noBody)
req.send();
else
req.send(null);
return req.responseXML;

}
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

chamado ainda

break;
case 1: // LOADING send() no foi
chamado ainda

case 2: // LOADED send() foi chamado,

disponvel getResponseHeader e status


responseText tem dados parciais

foram concluidas

req.status == 200) {

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 {

Contedo disponvel sob GNU Free Documentation License.

if (onerror)
onerror(req, id,
req.statusText);

}
break;

true, user, password);

}
}
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");

Contedo disponvel sob GNU Free Documentation License.

}
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

Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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.

42
Contedo disponvel sob GNU Free Documentation License.

Wikibooks, livre pensar e aprender

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.

43
Contedo disponvel sob GNU Free Documentation License.

Você também pode gostar