Вы находитесь на странице: 1из 31

PDF gerado usando o pacote de ferramentas em cdigo aberto mwlib. Veja http://code.pediapress.com/ para mais informaes.

PDF generated at: Fri, 06 Dec 2013 10:33:36 UTC


Javascript
Contedo
Pginas
Prefcio 1
Introduo 1
Conhecendo a linguagem
3
Tipos de dados 3
Converso de Tipos 5
Variveis 6
Operadores 10
Fluxo de Controle 11
Funes 15
Objetos 19
Outras informaes
23
Autores 23
Referncias 25
Ligaes externas 26
Referncias
Fontes e Editores da Pgina 27
Fontes, Licenas e Editores da Imagem 28
Licenas das pginas
Licena 29
Prefcio
1
Prefcio
alert("Ol JavaScript!");
Este livro cobre as especificaes tcnicas da verso do padro ECMAScript 262, da verso 5.1 em diante (Ecma-262
Edition 5.1
[1]
).
Os autores deste livro esperam 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
[1] http:/ / www. ecma-international. org/ ecma-262/ 5. 1/ ECMA-262. pdf
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 a JavaScript oferece uma reduzida
quantidade de tipos, isto , o necessrio para criao de telas dinmicas e certa lgica as pginas HTML.
A 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.
A 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
[1]
(European Computer Manufactures
Association) 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.
Contedo do livro
Aqui ser abordada a a especificao JavaScript 1.5 que segue a ECMA-262 edio 3.
Os autores deste livro esperam 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.
Verificando o JavaScript
Para verificar se o JavaScript est habilitado no seu browser, copie e cole o cdigo abaixo em uma arquivo HTML
qualquer e tente abri-lo.
<script language="javascript">
document.writeln("Hello, world!\n");
Introduo
2
</script>
O resultado esperado so duas linhas:
Hello, world!
Caso no aparea nada, ou aparea um erro, verifique as configuraes do browser. Alguns browsers deixam, por
padro, o JavaScript desabilitado.
Referncias
[1] http:/ / www. ecma-international. org
3
Conhecendo a linguagem
Tipos de dados
O JavaScript possui poucos tipos de dados. Abaixo eles so apresentados.
Numricos
Este tipo de dado armazena valores, tanto valores inteiros como ponto flutuante.
Exemplo:
1
84
2e10
3.141516
0.000001
Os valores numericos podem fazer parte de operaes aritmtica, 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 (mesmo que XOR), (&) operao E binria (mesmo que AND), (|) operao OU binria (mesmo que OR),
(~) negao binria (mesmo que 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 a abreviao de (Not a Number), igual a "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.
Valores Strings so valores delimitados por apstrofo ' ou por aspas " .
Exemplo:
"texto"// ou 'texto'
Uma barra inversa permite a insero de caracteres especiais.
Exemplo:
Tipos de dados
4
"\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
O 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.
O undefined
O valor undefined significa que a varivel no foi instanciada, inicialmente todas as variveis se encontram
neste estado.
Exerccios
Tente prever o que o script abaixo ir mostrar antes de copiar e colar seu contedo em um arquivo HTML e exibi-lo
no browser. Adiantando um pouco, o que document.writeln(x, "
"); faz exibir a varivel x , seguida de uma quebra de linha. Esta funo ser detalhada mais adiante, mas para
propsitos didticos importante saber como mostrar o que est sendo calculado.
document.writeln(1 << 3, "<br />");
document.writeln(0/0, "<br />");
document.writeln(5/2, "<br />"); /* esta bem maliciosa. O resultado
inteiro ou ponto flutuante? */
document.writeln("Hello, world!", "<br />");
document.writeln("Hello, world!<br />");
Converso de Tipos
5
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 numero = 1; //Numerica inteira.
var texto = "Srgio Eduardo Rodrigues"; //String.
var valor = 123.45; //Numerica com ponto flutuante.
var ativo = true; //Booleana.
var nascimento = new Date(1969,1,4); //Objeto date.
Esta forma de tratar variveis tem o curioso nome, em ingls, de "duck typing"
[1]
.
Convertendo
Uma varivel pode ser atribuda para outro tipo, ou utilizando uma funo de converso ou ento fazendo operaes
aritmticas.
Como por exemplo, quando atribumos 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 = 1; // inteiro 1 .
numero = numero / 2; // Vai para flutuante 0.5 .
numero = " " + numero; // ele convertido para string, pois est sendo
somado outra string.
numero = parseFloat(numero); // Ele ir resultar no nmero 0.5 .
numero = parseInt(numero); // Vai para o inteiro 0.
Referncias
[1] http:/ / en. wikipedia. org/ wiki/ Duck_typing Duck typing, na Wikipedia em ingls
Variveis
6
Variveis
Definio da varivel
As variveis so representadas por nomes chamados de identificadores. Estes identificadores devem ser criados com
certas regras:
1. Devem iniciar obrigatoriamente por letra ou pelo smbolo _ ou $.
2. A partir da, alm de letras, _ e $, podem conter algarismos (0 at 9).
A forma correta de se declarar uma varivel a seguinte:
1. Utilizando a palavra reservada var seguido do nome da varivel.
var nome = "Srgio Eduardo Rodrigues";
Uma varivel ou matriz que no tenha sido inicializada possui o valor undefined (indefinido). Observe que o
JavaScript case-sensitive, ou seja, letras minsculas e maisculas so coisas diferentes. Portanto, undefined
e null devem ser escritos sempre em letras minsculas.
Se uma varivel declarada apenas, com a instruo var (sem atribuir um valor), o seu contedo undefined
ou NaN (Not a Number, no um nmero), caso esteja num contexto numrico.
Exemplo:
var x;
x = x * 2;
O resultado ser NaN.
Ou se for utilizado:
x = x + "teste"
Ocorrer um erro de execuo, pois x no tem valor definido.
Escopo da varivel
Caso a varivel seja declarada fora do corpo de uma funo, ela ser considerada como pblica (global), 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 prpria funo.
Varivel pblica
Exemplo:
var x=10;
function fx() {
/* ser possvel utilizar o valor de x */
}
function fy() {
/* ser possvel utilizar o valor de x */
}
Variveis
7
Varivel privada
Exemplo:
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 */
}
Constantes
So variveis declaradas com a palavra chave const. 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;
Tambm ocorrer erro se j tiver sido declarada outra varivel ou funo com o mesmo nome:
function funcao() {}
const funcao = "teste";
Matrizes
Arrays, que incluem vetores e matrizes, so variveis que contm vrios elementos em seu interior. A declarao
de um vetor 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];
Os elementos individuais so acessados colocando-se a posio do elemento entre colchetes aps o nome do vetor.
Lembre sempre que os vetores iniciam pelo elemento zero (0). Por exemplo, para acessar o primeiro elemento do
vetor valores, escreveramos valores[0]. Podemos tanto ler quanto alterar elementos do vetor.
Podem-se utilizar elementos vazios na declarao de um vetor, por exemplo:
var frutas = ["laranja","banana",,"pera",,,"abacaxi"];
O resultado seria:
frutas[0] igual a "laranja"
frutas[1] igual a "banana"
frutas[2] igual a undefined
Variveis
8
frutas[3] igual a "pera"
frutas[4] igual a undefined
frutas[5] igual a undefined
frutas[6] igual a "abacaxi"
length um atributo especial que possui a quantidade de elementos do vetor. No uma funo; ou seja, tentar
utilizar frutas.length() causar um erro. A maneira correta de usar o atributo frutas.length, sem os
parnteses.
Outra forma de gerar erro tentar acessar elementos fora do range; no exemplo acima, frutas[7] faria o script
abortar.
Matrizes
Uma matriz um vetor de vetores, ou seja, declara-se um vetor, cujos elementos so vetores.
Exemplo:
var matriz = [["adao", "eva"], ["caim", "abel"]]
No caso acima, o elemento "caim" o elemento [0] do vetor [1] da matriz, ou seja, "caim" acessado via
matriz[1][0].
possvel definir uma matriz de forma parcial
Exemplo:
var genesis = [["adao", "eva"], ["caim", "abel", "sete"]]
Neste caso, os elementos necessrios para completar a matriz so preenchidos com undefined (no exemplo
acima, genesis[0][2]).
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 de vrias maneiras:
1e3 // igual a 1 x 10<sup>3</sup>, que 1000
-3.28e12 // igual a -3.28 x 10<sup>12</sup>, que -3280000000000
1e-12 // igual a 1 x 10<sup>12</sup>, que 0.000000000001
Valores inteiros podem ser representados em base 10 (decimal), 16 (hexadecimal) ou 8 (octal).
Exemplos:
012 // igual a 10 decimal. Sendo iniciado com 0, assumido que o
nmero octal.
0x12 // igual a 18 decimal. Nmeros iniciados com 0x so assumidos
como numero hexadecimais.
12 //representa 12 decimal.
Variveis
9
Strings
So seqncias de caracteres delimitadas 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 Representa o backspace (caractere ASCII 8)
\t Tabulao (caractere ASCII 9)
\r Retorno de carro (caractere ASCII 13)
\n Nova linha (caractere ASCII 10)
\v Tabulao vertical (caractere ASCII 11)
\uNNNN Caractere Unicode (NNNN representa um valor hexadecimal de 0000 a FFFF)
\xNN Caractere ASCII (NN representa um valor hexadecimal de 00 a FF)
\0NNN Caractere ASCII (NN representa um valor octal de 000 a 0377)
\' Apstrofe
\" Aspas
\\ Barra inversa
Operadores
10
Operadores
Operadores para efetuar mudana do contedo de uma varivel.
=: 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.
==: 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.
%: mdulo.
+: soma.
-: subtrao.
*: multiplicao.
/: diviso.
Operadores lgicos.
&&: mdulo.
||: ou.
!: no.
Operadores de bits.
&: 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.
?: 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.: z=(x=1,
y=2); faz com que x passe a valer 1, e y e z passem a valer 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 TipoDoObjeto(p1, ...): cria uma instncia do objeto.
Operadores
11
this: representa a instncia do objeto corrente.
void (expressao): resolve expresso, porm ignora valor retornado.
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 Internet Explorer e do Firefox.
function listener(event) {
event = event || window.event;
//...
}
Assim se esta funo estiver rodando no IE (Internet Explorer) 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.
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.
{
comando;
comando;
...
comando
}
Ou ento:
Fluxo de Controle
12
{
comando;
comando;
...
comando;
}
Comando If
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 expresso 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.
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
13
Comando While
Executa bloco enquanto condio resultar em verdadeiro.
while (condio) { bloco; }
Igual ao anterior, porm o bloco executado pelo menos uma vez, mesmo que a condio seja falsa.
do { bloco; } while (condio);
Comando Switch
Se o contedo da varivel for igual a constante1 ou constante2 ser executado o comando1; se for igual a
constante3 ser executado o comando2; caso contrrio ser executado o comando3; note que o comando
break fora o fluxo sair fora do comando switch.
switch(varivel) {
case constante1:
case constante2:
comando1;
break;
case constante3:
comando2;
break;
default:
comando3;
}
Comando for
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(inicializao; condio; incremento)
* comando;
*/
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
14
Comando label
O label permite que a indicao de uma posio que pode ser utilizado com continue e break para salto dentro
de um loop (lao).
label:
Comando continue
Salta para loop ou para loop que est aps label indicado.
continue;
continue label;
Comando break
Sai fora do loop corrente ou do loop que esta aps label informado.
break;
break label;
Comando throw
Lana exceo.
throw expresso;
Comando try
Captura qualquer erro que um comando lance e captura excees conforme expresso.
Abaixo o comando2 ser executado caso comando1 lance uma exceo.
try {
comando1;
} catch(e) {
comando2;
}
Abaixo o comando3 ser executado caso a exceo lanada pelo comando1 seja igual a expresso1, se for
igual a expresso2 o comando4 ser executado, se for lanado uma exceo que no seja igual nem a
expresso1 e nem a expresso2 ser executado o comando2;
try {
comando1;
} catch(e if e == expressao1) {
comando3;
} catch(e if e == expresso2) {
comando4;
} catch(e) {
comando2;
}
Executa comando1 se este lanar uma exceo executa comando2 em seguida comando3, se comando1 no
lanar nenhuma exceo executa comando3;
Fluxo de Controle
15
try {
comando1;
} catch(e) {
comando2;
} finally {
comando3;
}
Exemplo:
var x = [["adao"], ["eva"], ["caim"], ["abel"]];
for (i = 0; i < 100; i++) {
try {
document.writeln("x[", i, "][0] = ", x[i][0], "<br />");
} catch (e) {
document.writeln(e, "<br />");
break;
}
}
Observao: no exemplo acima, caso x fosse um vetor (Array de uma dimenso), no haveria erro, mas o loop
continuaria, apresentando x[4] = undefined, x[5] = undefined, e assim por
diante.
Funes
As funes so declaradas pela palavra reservada function (palavra-chave, keyword), seguido:
1. Do Identificador (assim o nome de uma varivel);
2. da lista de argumentos (list of arguments) delimitados por parnteses e separados por vrgula: (/*
argumentos */);
3. das instrues (bloco de instrues, ou cdigo; corpo da funo), delimitado por chaves: {/* instrues
*/}.
Referncias:
[1]
.
Exemplo:
function identificador (argumento1, argumento2, argumento3 /*, ... */) {
//Instrues; corpo da funo.
}
Uma sintaxe alternativa demonstrada abaixo.
var identificador = new function(argumento1, argumento2, argumento3 /*,
... */) {
//Instrues; corpo da funo.
};
Funes
16
Funes predefinidas segundo o padro ECMA 262
Verso consultada: 5.1
[2]
.
Array.prototype.concat
Array.prototype.constructor
Array.prototype.every
Array.prototype.filter
Array.prototype.forEach
Array.prototype.indexOf
Array.prototype.join
Array.prototype.lastIndexOf
Array.prototype.map
Array.prototype.pop
Array.prototype.push
Array.prototype.reduce
Array.prototype.reduceRight
Array.prototype.reverse
Array.prototype.shift
Array.prototype.slice
Array.prototype.some
Array.prototype.sort
Array.prototype.splice
Array.prototype.toLocaleString
Array.prototype.toString
Array.prototype.unshift
Boolean.prototype.constructor
Boolean.prototype.toString
Boolean.prototype.valueOf
Date.prototype.constructor
Date.prototype.getDate
Date.prototype.getDay
Date.prototype.getFullYear
Date.prototype.getHours
Date.prototype.getMilliseconds
Date.prototype.getMinutes
Date.prototype.getMonth
Date.prototype.getSeconds
Date.prototype.getTime
Date.prototype.getTimezoneOffset
Date.prototype.getUTCDate
Date.prototype.getUTCDay
Date.prototype.getUTCFullYear
Date.prototype.getUTCHours
Date.prototype.getUTCMilliseconds
Date.prototype.getUTCMinutes
Date.prototype.getUTCMonth
Date.prototype.getUTCSeconds
Date.prototype.getYear
Funes
17
Date.prototype.setDate
Date.prototype.setFullYear
Date.prototype.setHours
Date.prototype.setMilliseconds
Date.prototype.setMinutes
Date.prototype.setMonth
Date.prototype.setSeconds
Date.prototype.setTime
Date.prototype.setUTCDate
Date.prototype.setUTCFullYear
Date.prototype.setUTCHours
Date.prototype.setUTCMilliseconds
Date.prototype.setUTCMinutes
Date.prototype.setUTCMonth
Date.prototype.setUTCSeconds
Date.prototype.setYear
Date.prototype.toDateString
Date.prototype.toGMTString
Date.prototype.toISOString
Date.prototype.toJSON
Date.prototype.toLocaleDateString
Date.prototype.toLocaleString
Date.prototype.toLocaleTimeString
Date.prototype.toString
Date.prototype.toTimeString
Date.prototype.toUTCString
Date.prototype.valueOf
Error.prototype.constructor
Error.prototype.message
Error.prototype.name
Error.prototype.toString
Function.prototype.apply
Function.prototype.bind
Function.prototype.call
Function.prototype.constructor
Function.prototype.toString
NativeError.prototype.constructor
NativeError.prototype.message
NativeError.prototype.name
Number.prototype.constructor
Number.prototype.toExponential
Number.prototype.toFixed
Number.prototype.toLocaleString
Number.prototype.toPrecision
Number.prototype.toString
Number.prototype.valueOf
Object.prototype.constructor
Funes
18
Object.prototype.hasOwnProperty
Object.prototype.isPrototypeOf
Object.prototype.propertyIsEnumerable
Object.prototype.toLocaleString
Object.prototype.toString
Object.prototype.valueOf
RegExp.prototype.constructor
RegExp.prototype.exec
RegExp.prototype.test
RegExp.prototype.toString
String.prototype.charAt
String.prototype.charCodeAt
String.prototype.concat
String.prototype.constructor
String.prototype.indexOf
String.prototype.lastIndexOf
String.prototype.localeCompare
String.prototype.match
String.prototype.replace
String.prototype.search
String.prototype.slice
String.prototype.split
String.prototype.substr
String.prototype.substring
String.prototype.toLocaleLowerCase
String.prototype.toLocaleUpperCase
String.prototype.toLowerCase
String.prototype.toString
String.prototype.toUpperCase
String.prototype.trim
String.prototype.valueOf
(Objeto global) eval (x)
(Objeto global) parseInt (string , radix)
(Objeto global) parseFloat (string)
(Objeto global) isNaN (number)
(Objeto global) isFinite (number)
Tarefa: Completar a lista (faltam objetos como Math...) e melhorar o script que pega objetos e suas funes...
Observaes: Para conseguir esta lista, visite a verso em HTML da documentao do padro ECMA 262, e execute
o seguinte script.
//... fazer o script ;)
Funes
19
Referncias
[1] MDN: https:/ / developer.mozilla. org/ en-US/ docs/ Web/ JavaScript/ Guide/ Functions Funes.
[2] http:/ / www. ecma-international. org/ ecma-262/ 5. 1/
Objetos
Definio de Objeto
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 ento:
function objetoPessoa() {
this.nome = "Srgio";
this.altura = 1.72;
this.nascimento = new Date(1969,1,4)
}
var pessoa = new objetoPessoa();
Observaes: 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 podem-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";
Objetos
20
pessoa.altura = 1.78;
pessoa.nascimento = new Date(1975, 6, 25);
pessoa.mostre();
Mtodos tambm podem ser atribudos diretamente no objeto, sem a necessidade de especificar primeiro a funo.
var pessoa = {
nome: "Sergio",
altura: 1.72,
nascimento: new Date(1969,1,4),
mostre: function(){
alert(this.nome + "\n" + this.altura + "\n" + this.nascimento);
}
};
pessoa.mostre();
pessoa.nome = "eduardo";
pessoa.altura = 1.78;
pessoa.nascimento = new Date(1975, 6, 25);
pessoa.mostre();
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 this.valor/4;
}
};
conta.deposito = 100;
conta.saque = 50;
alert("proviso = " + conta.provisao + "\n saldo = " + conta.valor);
Objetos
21
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.
Array
Definio
O objeto Array (matriz ou vetor) pode ser tanto criado implicitamente:
var m = [1, 2, 3, 4];
Quanto explicitamente:
var m = new Array(1, 2, 3, 4);
Este objeto manipula uma coleo de outros objetos.
Atributos
O atributo length possui a quantidade de elementos que tem a matriz.
Mtodos
O mtodo concat retorna uma nova matriz, concatenando a primeira matriz (original) com os valores ou matrizes
dados como argumentos.
Exemplo:
var m = ["sergio", "eduardo"];
var n = m.concat("rodrigues");
//n ter valor/["sergio", "eduardo", "rodrigues"]
O mtodo join junta todos os elementos da matriz em uma string, colocando um separador entre os itens.
Exemplo:
var m = ["sergio", "eduardo", "rodrigues"];
var n = m.join("+ ");
//n ter valor/"sergio+ eduardo+ rodrigues"
O mtodo pop remove o ltimo elemento da matriz, retornando o elemento removido.
Exemplo:
var m = ["sergio", "eduardo", "rodrigues"];
var n = m.pop();
//n ter valor/"rodrigues"; e ''m''/["sergio", "eduardo"]
O mtodo push adiciona elementos ao final da matriz. O valor de retorno depende da verso do JavaScript/at a
1.2, o mtodo retorna o ltimo elemento adicionado; a partir da 1.3, retorna o novo tamanho da matriz.
Exemplo:
var m = ["sergio", "eduardo"];
var n = m.push("rodrigues");
//n ter valor/"rodrigues" (JS &lt; 1.3) ou 3 (JS 1.3) e m/["sergio",
"eduardo", "rodrigues"]
Objetos
22
O mtodo reverse inverte a ordem dos elementos da matriz.
Exemplo:
var m = ["sergio", "eduardo", "rodrigues"];
var n = m.reverse();
//n e m tero valor/["rodrigues", "eduardo", "sergio"]
O mtodo shift remove o primeiro elemento da matriz, retornando o elemento removido.
Exemplo:
var m = ["sergio", "eduardo", "rodrigues"];
var n = m.shift();
n ter valor/"sergio"
m ter valor/["eduardo", "rodrigues"]
O mtodo slice(incio, fim), ou slice(incio), retorna uma faixa da matriz, extraindo elementos a
partir de incio e at (mas no inclusive) fim. Se fim for omitido, extrai-se at o fim da matriz. fim tambm pode ser
negativo; -1 indica o ltimo elemento (que no ser extrado, nesse caso).
Exemplo:
var m = ["a", "b", "c", "d", "e", "f", "g", "h"];
var n = m.slice(0, 2);
\\n ter valor/["a", "b"]
O mtodo splice(incio), splice(incio, nmero), splice(incio, nmero, itens a
inserir...), adiciona e/ou remove faixas dentro de uma matriz. O primeiro argumento o ndice a partir do
qual devem ser feitas as mudanas? remover nmero itens e adicionar os itens a inserir.
Exemplo:
var m = ["a", "b", "c", "d", "e", "f", "g", "h"];
var n = m.splice(0, 2);
//n ter valor/["a", "b"]
//m ter valor/["c", "d", "e", "f", "g", "h"]
O mtodo sort, sort (funo_de_comparao(a, b)), ordena a matriz, opcionalmente com base em
uma funo de comparao personalizada.
Exemplo:
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 um valor menor que zero se a < b (a deve ser
classificado antes de b), 0 se a = b e maior que zero se a > b.
O mtodo unshift(item, ...) adiciona um ou mais elementos ao inicio da matriz.
Exemplo:
var m = ["sergio", "eduardo", "rodrigues"];
m.unshift("sr");
//m ter valor/["sr", "sergio", "eduardo", "rodrigues"]
23
Outras informaes
Autores
Os usurios citados abaixo contribuiram para o desenvolvimento deste trabalho. Estes dados foram obtidos em
29/11/2013.
139.82.111.103
143.54.47.6
186.252.179.139
187.102.105.169
187.79.72.233
187.90.91.1
189.24.181.228
189.30.26.114
189.99.126.115
200.129.179.179
200.136.214.104
200.139.136.105
200.152.197.2
200.158.142.22
200.160.248.50
200.168.66.254
200.177.104.99
200.193.47.193
200.194.101.18
200.196.241.66
200.251.177.107
201.0.243.63
201.1.1.79
201.18.17.50
201.19.116.102
201.21.20.227
201.22.140.203
201.31.99.130
201.35.64.150
201.44.226.130
201.68.231.104
79.27.228.190
83.132.93.100
89.155.31.122
Abacaxi
Albmont
Algum
Atoj
Autores
24
Belegurth
Dante Cardoso Pinto de Almeida
Edudobay
Guiwp
Helder.wiki
Helder.wiki.bot
JackPotte
Jml3
Jorge Morais
KnowledgeSeeker017
LeonardoG
LeonardoRob0t
Lightningspirit
Lus Felipe Braga
Makiyto
Marcos Antnio Nunes de Moura
MGFE Jnior
NunoAgostinho
PatiBot
Raylton P. Sousa
SallesNeto BR
Seduardo
Treas25
Wikimi-dhiann
Referncias
25
Referncias
Este mdulo tem a seguinte tarefa pendente: Talvez deva ser renomeado para Ligaes externas.
Codecademy
[1]
curso de JavaScript.
Tutorial de JavaScript
[2]
em Portugus e Ingls.
The JavaScript Programming Language
[3]
uma srie de apresentaes produzidas por Douglas Crockford do
Yahoo (Em Ingls).
JavaScript Tutorial
[4]
curso online de JavaScript (W3Schools - Em Ingls).
JScript
[5]
verso da Microsoft do JavaScript, usado no Internet Explorer (Em Ingls).
JavaScript
[6]
pgina de JavaScript da fundao Mozilla (Em Ingls).
Standard ECMA-262
[7]
especificao oficial do JavaScript (Em Ingls).
Exemplos do Javascript
[8]
diversos cdigos de exemplo (em espanhol).
Guia Javascript da fundao Mozilla
[9]
um bom guia de javascript em Ingls.
Programao baseada em classe vs. Programao baseada em prottipo
[10]
essencial para quem est
acostumado com o paradigma da programao orientada a objeto, o texto est em Ingls.
Uma Re-Introduo ao Javascript (ingls)
[11]
.
Definio do Javascript
[7]
definio do javascript pela ecma, orgo europeu de padronizao.
Javascript projeto Mozilla
[12]
referncia a tecnologia javascript pelo projeto mozilla.
Definio XMLHttpRequest
[13]
definio de XMLHttpRequest pelo mozilla.
Javascript Microsoft
[14]
pgina inicial de javascript na MSDN.
Referncias
[1] http:/ / www. codecademy. com/ pt/ tracks/ javascript
[2] http:/ / www. javascript-tutorial. com. br
[3] http:/ / 101out. com/ js. php
[4] http:/ / www. w3schools. com/ js/ default.asp
[5] http:/ / msdn. microsoft. com/ library/ default.asp?url=/ library/ en-us/ script56/ html/ js56jsoriJScript. asp
[6] http:/ / www. mozilla. org/ js/
[7] http:/ / www. ecma-international. org/ publications/ standards/ Ecma-262. htm
[8] http:/ / www. mis-algoritmos.com/ ejemplos/ javascript. ejemplos. html
[9] http:/ / developer. mozilla.org/ en/ docs/ Core_JavaScript_1. 5_Guide
[10] http:/ / developer. mozilla.org/ en/ docs/ Core_JavaScript_1. 5_Guide:Class-Based_vs. _Prototype-Based_Languages
[11] https:/ / developer. mozilla. org/ en/ a_re-introduction_to_javascript
[12] http:/ / www.mozilla. org/ js
[13] http:/ / kb. mozillazine. org/ XMLHttpRequest
[14] http:/ / msdn. microsoft. com/ library/ default.asp?url=/ library/ en-us/ dninvbs/ html/ scriptinglanguages. asp
Ligaes externas
26
Ligaes externas
http:/ / en. wikipedia. org/ wiki/ Duck_typing
http:/ / www. w3. org/ DOM
http:/ / www. tizag. com/ javascriptT/ javascriptform. php
http:/ / www. webcheatsheet. com/ javascript/ form_validation. php
http:/ / 101out. com/ js. php
http:/ / developer. mozilla. org/ en/ docs/ Core_JavaScript_1. 5_Guide
http:/ / developer. mozilla. org/ en/ docs/ Core_JavaScript_1. 5_Guide:Class-Based_vs.
_Prototype-Based_Languages
http:/ / kb. mozillazine. org/ XMLHttpRequest
http:/ / msdn. microsoft. com/ library/ default. asp?url=/ library/ en-us/ script56/ html/ js56jsoriJScript. asp
http:/ / msdn. microsoft. com/ library/ default. asp?url=/ library/ en-us/ dninvbs/ html/ scriptinglanguages. asp
http:/ / www. codecademy. com/ pt/ tracks/ javascript
http:/ / www. ecma-international. org
http:/ / www. ecma-international. org/ publications/ standards/ Ecma-262. htm
http:/ / www. javascript-tutorial. com. br
http:/ / www. mis-algoritmos. com/ ejemplos/ javascript. ejemplos. html
http:/ / www. mozilla. org/ js
http:/ / www. mozilla. org/ js/
http:/ / www. w3schools. com/ js/ default. asp
https:/ / developer. mozilla. org/ en/ a_re-introduction_to_javascript
Fontes e Editores da Pgina
27
Fontes e Editores da Pgina
Prefcio Fonte: http://pt.wikibooks.org/w/index.php?oldid=265143 Contribuidores: Guiwp
Introduo Fonte: http://pt.wikibooks.org/w/index.php?oldid=261998 Contribuidores: Abacaxi, Albmont, Belegurth, Guiwp, JackPotte, KnowledgeSeeker017, LeonardoRob0t, Marcos Antnio
Nunes de Moura, Raylton P. Sousa, Seduardo, 4 edies annimas
Tipos de dados Fonte: http://pt.wikibooks.org/w/index.php?oldid=264676 Contribuidores: Abacaxi, Albmont, Algum, Belegurth, Dante Cardoso Pinto de Almeida, Guiwp, JackPotte,
LeonardoRob0t, Marcos Antnio Nunes de Moura, Raylton P. Sousa, SallesNeto BR, Seduardo, 11 edies annimas
Converso de Tipos Fonte: http://pt.wikibooks.org/w/index.php?oldid=264632 Contribuidores: Abacaxi, Albmont, Algum, Belegurth, Guiwp, Jorge Morais, LeonardoRob0t, Marcos Antnio
Nunes de Moura, Raylton P. Sousa, Seduardo, 9 edies annimas
Variveis Fonte: http://pt.wikibooks.org/w/index.php?oldid=265128 Contribuidores: Abacaxi, Guiwp, JackPotte, LeonardoRob0t, Raylton P. Sousa, Seduardo, 2 edies annimas
Operadores Fonte: http://pt.wikibooks.org/w/index.php?oldid=264672 Contribuidores: Abacaxi, Albmont, Algum, Guiwp, JackPotte, LeonardoRob0t, Raylton P. Sousa, Seduardo
Fluxo de Controle Fonte: http://pt.wikibooks.org/w/index.php?oldid=264642 Contribuidores: Abacaxi, Guiwp, JackPotte, LeonardoRob0t, Raylton P. Sousa, Seduardo
Funes Fonte: http://pt.wikibooks.org/w/index.php?oldid=265141 Contribuidores: Abacaxi, Algum, Guiwp, JackPotte, LeonardoRob0t, Makiyto, NunoAgostinho, Raylton P. Sousa,
Seduardo, 1 edies annimas
Objetos Fonte: http://pt.wikibooks.org/w/index.php?oldid=264684 Contribuidores: Abacaxi, Guiwp, JackPotte, LeonardoRob0t, Raylton P. Sousa, Seduardo, 1 edies annimas
Autores Fonte: http://pt.wikibooks.org/w/index.php?oldid=264901 Contribuidores: Abacaxi, Guiwp, LeonardoRob0t, Lightningspirit, Raylton P. Sousa, Seduardo, 1 edies annimas
Referncias Fonte: http://pt.wikibooks.org/w/index.php?oldid=261993 Contribuidores: Abacaxi, Algum, Guiwp, Helder.wiki, LeonardoRob0t, Raylton P. Sousa, Seduardo
Ligaes externas Fonte: http://pt.wikibooks.org/w/index.php?oldid=262399 Contribuidores: Guiwp
Fontes, Licenas e Editores da Imagem
28
Fontes, Licenas e Editores da Imagem
Imagem:Crystal_Clear_app_kaddressbook.png Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Crystal_Clear_app_kaddressbook.png Licena: GNU Free Documentation License
Contribuidores: CyberSkull, It Is Me Here, Rocket000
Licena
29
Licena
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

Вам также может понравиться