Ative suas páginas Web A br a nge E6ª E CMA diç S ã cri o pt 5 & H T M L 5 JavaScript O guia defi nitivo David Flanagan F583j Flanagan, David JavaScript : o guia definitivo / David Flanagan ; tradução: João Eduardo Nóbrega Tortello ; revisão técnica: Luciana Nedel. – 6. ed. – Porto Alegre : Bookman, 2013. xviii, 1062 p. : il. ; 25 cm. ISBN 978-85-65837-19-4 1. Ciência da computação. 2. Linguagem de programação – JavaScript. I. Título. CDU 004.438JavaScript Catalogação na publicação: Natascha Helena Franz Hoppen – CRB 10/2150 Tradução: João Eduardo Nóbrega Tortello Revisão técnica: Luciana Nedel Doutora em Ciência da Computação pela École Polytechnique Fédérale de Lausanne, Suíça Professora adjunta do Instituto de Informática da UFRGS 2013 Obra originalmente publicada sob o título JavaScript: The Definitive Guide, 6E ISBN 978-0-596-80552-4 copyright © 2011, David Flanagan. Tradução para a língua portuguesa copyright © 2013, Bookman Companhia Editora Ltda., uma empresa do Grupo A Educação SA. Esta tradução é publicada e comercializada com a permissão da O'Reilly Media,Inc., detentora de todos os direitos de publicação e comercialização da obra. Capa: VS Digital, arte sobre capa original Preparação de original: Bianca Basile Gerente Editorial – CESA: Arysinha Jacques Aff onso Editora responsável por esta obra: Mariana Belloli Editoração eletrônica: Techbooks Reservados todos os direitos de publicação, em língua portuguesa, à BOOKMAN EDITORA LTDA., uma empresa do GRUPO A EDUCAÇÃO S.A. Av. Jerônimo de Ornelas, 670 – Santana 90040-340 – Porto Alegre – RS Fone: (51) 3027-7000 Fax: (51) 3027-7070 É proibida a duplicação ou reprodução deste volume, no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia, distribuição na Web e outros), sem permissão expressa da Editora. Unidade São Paulo Av. Embaixador Macedo Soares, 10.735 – Pavilhão 5 – Cond. Espace Center Vila Anastácio – 05095-035 – São Paulo – SP Fone: (11) 3665-1100 Fax: (11) 3667-1333 SAC 0800 703-3444 – www.grupoa.com.br IMPRESSO NO BRASIL PRINTED IN BRAZIL O autor David Flanagan é programador e escritor. Seu site é http://davidflanagan.com. Outros de seus livros publicados pela O’Reilly incluem JavaScript Pocket Reference, The Ruby Programming Language e Java in a Nutshell. David é formado em ciência da computação e engenharia pelo Massachusetts Ins- titute of Technology. Mora com sua esposa e filhos na região noroeste do Pacífico, entre as cidades de Seattle, Washington, Vancouver e British Columbia. A capa O animal que aparece na capa da 6ª edição deste livro é um rinoceronte de Java. Todas as cinco es- pécies de rinoceronte são conhecidas por seu enorme tamanho, couro espesso como uma armadura, pés com três dedos e um ou dois chifres no focinho. O rinoceronte de Java, junto com o rinoceronte de Sumatra, é uma das duas espécies que vivem em florestas. Ele tem aparência semelhante ao rino- ceronte indiano, mas é menor e possui certas características diferenciadas (principalmente a textura da pele). Os rinocerontes são frequentemente retratados em pé, com seus focinhos na água ou na lama. Na verdade, muitas vezes eles podem ser encontrados exatamente assim. Quando não estão repousando em um rio, os rinocerontes cavam buracos profundos para chafurdar. Esses dois locais de descanso oferecem duas vantagens. Primeiramente, aliviam o animal do calor tropical e oferecem uma pro- teção contra moscas sugadoras de sangue. (O lodo que o chafurdar deixa na pele do rinoceronte também oferece certa proteção contra moscas.) Segundo, a lama e a água do rio ajudam a suportar o peso considerável desses animais enormes, aliviando o peso sobre suas pernas e costas. O folclore há muito tempo diz que o chifre do rinoceronte possui poderes mágicos e afrodisíacos, e que os seres humanos, ao conquistarem os chifres, também obtêm esses poderes. Esse é um dos motivos pelos quais os rinocerontes são alvos de caçadores. Todas as espécies de rinoceronte estão em perigo, e a população de rinocerontes de Java é a que está em estado mais precário. Existem menos de 100 desses animais. Houve um tempo em que os rinocerontes de Java podiam ser encontrados por todo o sudeste asiático, mas agora acredita-se que só existam na Indonésia e no Vietnã. A ilustração da capa é uma gravura do Dover Pictorial Archive do século XIX. A fonte usada na capa é Adobe ITC Garamond. A fonte do texto é Adobe Garamond Pro, a dos títulos é Myriad Pro Condensed e a do código é TheSansMono. Este livro é dedicado a todos que pregam a paz e se opõem à violência. Prefácio Este livro abrange a linguagem JavaScript e as APIs JavaScript implementadas pelos navegadores Web. Eu o escrevi para os leitores com pelo menos alguma experiência prévia em programação que queiram aprender JavaScript e também para programadores que já utilizam JavaScript, mas querem aumentar seu conhecimento e realmente dominar a linguagem e a plataforma Web. Meu objetivo com este livro é documentar de forma ampla e definitiva a linguagem e a plataforma Java- Script. Como resultado, ele é grande e detalhado. Contudo, espero que sua leitura cuidadosa seja recompensadora e que o tempo investido nela seja facilmente recuperado em forma de uma maior produtividade ao programar. Este livro está dividido em quatro partes. A Parte I abrange a linguagem JavaScript em si. A Parte II abrange JavaScript do lado do cliente: as APIs JavaScript definidas por HTML5 e padrões relaciona- dos e implementados pelos navegadores Web. A Parte III é a seção de referência da linguagem básica e a Parte IV é a referência para JavaScript do lado do cliente. O Capítulo 1 inclui um esboço dos capítulos das partes I e II (consulte a Seção 1.1). Esta 6ª edição do livro abrange ECMAScript 5 (a versão mais recente da linguagem básica) e HTML5 (a versão mais recente da plataforma Web). Você vai encontrar material sobre ECMAScript 5 ao longo de toda a Parte I. O material novo sobre HTML5 aparece principalmente nos capítulos do final da Parte II, mas também em alguns outros capítulos. Os capítulos totalmente novos desta edição são: Capítulo 11, Subconjuntos e extensões de JavaScript; Capítulo 12, JavaScript do lado do servidor; Capítulo 19, A biblioteca jQuery; e Capítulo 22, APIs de HTML5. Os leitores das versões anteriores poderão notar que reescrevi completamente muitos dos capítulos para a 6ª edição deste livro. O núcleo da Parte I – os capítulos que abordam objetos, arrays, funções e classes – é totalmente novo e torna o livro compatível com os estilos e as melhores práticas de pro- gramação atuais. Da mesma forma, os principais capítulos da Parte II, como aqueles que abordam documentos e eventos, foram completamente atualizados. x Prefácio Um lembrete sobre pirataria Caso esteja lendo a versão digital deste livro pela qual você (ou sua empresa) não pagou (ou pegou em- prestado de alguém que não pagou), então provavelmente tem um exemplar pirateado ilegalmente. Es- crever a 6ª edição deste livro foi um trabalho de tempo integral e me ocupou mais de um ano. A única maneira pela qual sou pago por esse tempo é quando os leitores compram o livro. E a única maneira de poder arcar com as despesas de uma 7ª edição é receber pela 6ª. Eu não tolero pirataria, mas se você tem um exemplar pirateado, vá em frente e leia alguns capítulos. Penso que você vai considerar este livro uma fonte de informações valiosa sobre JavaScript, mais bem or- ganizada e de qualidade mais alta do que o material que poderá encontrar gratuitamente (e legalmente) na Web. Se concordar que esta é uma fonte valiosa de informações, então, por favor, pague o preço de aquisição de um exemplar legal (digital ou impresso) do livro. Por outro lado, se achar que este livro não vale mais do que as informações gratuitas da Web, então desfaça-se de seu exemplar pirateado e use as fontes de informação gratuitas. Convenções usadas neste livro Utilizo as seguintes convenções tipográficas neste livro: Itálico Utilizado para dar ênfase e para indicar o primeiro uso de um termo. Itálico também é usado para endereços de email, URLs e nomes de arquivo. Largura constante Utilizada em todo código JavaScript, listagens CSS e HTML, e de modo geral para tudo que seria digitado literalmente ao se programar. Itálico de largura constante Utilizado para nomes de parâmetros de função e de modo geral como espaço reservado para indicar um item que deve ser substituído por um valor real em seu programa. Exemplo de código Os exemplos deste livro estão disponíveis online. Você pode encontrá-los na página do livro, no site da editora: http://www.bookman.com.br Este livro está aqui para ajudá-lo em seu trabalho. De maneira geral, você pode usar os códigos em seus programas e documentação. Não é preciso entrar em contato com a editora para pedir permissão, a não ser que esteja reproduzindo uma parte significativa de código. Por exemplo, não é necessário permissão para escrever um programa que utilize vários trechos de código deste livro. Vender ou distribuir um CD-ROM com exemplos exige permissão. Responder a uma per- gunta mencionando este livro e citando um exemplo de código não exige permissão. Incorpo-
Description: