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 < 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/