Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Visão geral do JavaScript

Este capítulo é uma introdução sobre a linguagem JavaScript e discute alguns dos conceitos fundamentais.

O que é o JavaScript?

JavaScript é uma linguagem de scripting multiplataforma e orientada a objetos. É uma linguagem pequena e leve; não é útil como uma linguagem independente mas foi projetada para ser facilmente incorporada a outros produtos e aplicações, como navegadores web. Dentro de um ambiente hospedeiro, o JavaScript pode ser conectado aos objetos do ambiente para oferecer controle programático sobre eles.

O núcleo do JavaScript contém um grupo básico de objetos como Array, Date e Math, e um grupo básico de elementos de linguagem como operadores, estruturas de controle e declarações. O núcleo do JavaScript pode ser estendido para diversos outros propósitos através da complementação com objetos adicionais. Por exemplo:

  • JavaScript no lado do cliente estende a linguagem básica através do fornecimento de objetos para controle do navegador (Navigator ou outro navegador web) e seu Modelo de Objeto de Documento (DOM). Por exemplo, extensões no lado do cliente permitem a uma aplicação colocar elementos em um formulário HTML e responder a eventos do usuário como cliques do mouse, entrada de dados em formulário e navegação na página.
  • JavaScript no lado do servidor estende a linguagem básica fornecendo objetos relevantes à execução de JavaScript no servidor. Por exemplo, extensões no servidor permitem a uma aplicação se comunicar com um banco de dados relacional, disponibilizar continuidade de informação entre uma chamada e outra da aplicação ou realizar manipulações de arquivo em um servidor.

Através da funcionalidade LiveConnect do JavaScript você pode permitir código Java e código JavaScript se comunicarem. Do JavaScript, você pode instanciar objetos Java e acessar seus métodos e atributos públicos. Do Java, você pode acessar objetos, propriedades e métodos JavaScript.

A Netscape inventou o JavaScript e este foi utilizado pela primeira vez em seus navegadores.

JavaScript e Java

JavaScript e Java são parecidos em alguns aspectos mas completamente diferentes em outros. A linguagem JavaScript lembra a Java mas não possui a tipagem estática e a pesada verificação de tipo presentes neste. O JavaScript segue grande parte da sintaxe de expressões, das convenções de nomenclatura e dos construtos de controle de fluxo do Java, razão pela qual foi renomeada de LiveScript para JavaScript.

Contrastando com a forma do sistema de compilação de classes construído por declaração do Java, o JavaScript utiliza um sistema de execução em tempo real baseado em um pequeno número de tipos de dados como números, tipos lógicos e variáveis de texto. O JavaScript tem um modelo de objetos baseado em protótipos ao invés do modelo comum baseado em classes. O modelo baseado em protótipos provê herança dinâmica; que é o quanto uma herança pode variar para objetos individuais. O JavaScript também suporta funções sem qualquer declaração especial de requisitos. Funções podem ser propriedades de objetos, sendo executadas como objetos tipados livres.

O JavaScript é uma linguagem com mais liberdade de padrões se comparado ao Java. Você não precisa declarar todas as variáveis, classes e métodos. Você não precisa se preocupar quando um método é público, privado ou protegido, e você não precisa implementar interfaces. Variáveis, parâmetros e tipos de retorno de funções não são explicitamente declarados.

Java é uma linguagem de programação baseada em classes projetada para execução rápida e tipagem segura. Tipagem segura significa, por exemplo, que você não pode usar um inteiro em Java como uma referência a um objeto ou acessar a memória privada pois corrompe o código Java. O modelo Java baseado em classes significa que os programas consistem exclusivamente de classes e seus métodos.  A herança em Java é fortemente tipada geralmente requerendo uma forte hierarquia de objetos. Estes requisitos fazem a programação Java ser mais complexa que a programação JavaScript.

Ao contrário, JavaScript segue a linha de linguagens menores e dinamicamente tipadas como HyperTalk e dBASE. Estas linguagens de scripting oferecem ferramentas de programação para um público muito maior por causa da sua sintaxe mais fácil, funcionalidades especializadas nativas, e requisitos mínimos para criação de objetos.

Tabela 1.1 JavaScript comparado ao Java
JavaScript Java
Orientado a objetos. Sem distinção entre tipos e objetos. Herança feita através do mecanismo de protótipo, e propriedades e métodos podem ser adicionados a qualquer tipo de objeto dinamicamente. Baseado em classes. Objetos são divididos em classes e instâncias com toda a herança através da hierarquia de classes. Classes e instâncias não podem ter propriedades ou métodos adicionados dinamicamente.
Tipo de dado de variável não declarado (tipagem dinâmica). Tipo de dado de variável deve ser declarado (tipagem estática).
Não pode escrever no disco rígido automaticamente. Não pode escrever no disco rígido automaticamente.

Para mais informações quanto às diferenças entre JavaScript e Java, veja o capítulo Details of the Object Model.

JavaScript e a Especificação ECMAScript

A Netscape criou o JavaScript e o JavaScript foi usado pela primeira vez nos navegadores Netscape. Entretanto, o Netscape trabalha com a Ecma International — a Associação Europeia para padronização de informação e comunicação de sistemas (ECMA era antigamente um acrônimo para Associação Europeia de Produtores de Computador) para disponibilizar uma linguagem internacional padronizada baseada no núcleo do JavaScript. Esta versão padronizada do JavaScript, chamada ECMAScript, comportava-se da mesma forma em todas as aplicações que suportavam o padrão. Empresas podem usar a linguagem padrão aberta para desenvolver suas implementações de JavaScript. O patrão ECMAScript é documentado na especificação ECMA-262.

O padrão ECMA-262 foi aprovado pela ISO (Organização Internacional de Padronização) como ISO-16262. Você pode encontrar um versão PDF do ECMA-262 (versão desatualizada) no site da Mozilla. Você também pode encontrar a especificação na página da Ecma International. A especificação do ECMAScript não descreve o Modelo de Objeto de Documento (DOM), que é padronizado pelo World Wide Web Consortium (W3C). O DOM define a forma na qual objetos de documento HTML são expostos no script.

Relações entre Versões JavaScript e Edições ECMAScript

A Netscape trabalhou juntamente com a Ecma Internacional para produzir a Especificação ECMAScript (ECMA-262). A tabela a seguir descreve a relação entre versões JavaScript e edições ECMAScript.

Tabela 1.2 versões JavaScript e edições ECMAScript
Versão JavaScript Relação com a edição ECMAScript
JavaScript 1.1 ECMA-262, A edição 1 é baseada no JavaScript 1.1.
JavaScript 1.2 ECMA-262 não estava completa quando o JavaScript 1.2 foi liberado. JavaScript 1.2 não é totalmente compatível com ECMA-262, Edição 1, pelos seguintes motivos:
  • Netscape desenvolveu funcionalidades adicionais no JavaScript 1.2 que não foram consideradas para o ECMA-262.
  • ECMA-262 adicionou duas novas funcionalidades: internacionalização usando Unicode, e comportamento uniforme entre as plataformas. Diversas funcionalidades do JavaScript 1.2, com o objeto Date , eram dependentes de plataforma e com comportamentos específicos.

JavaScript 1.3

JavaScript 1.3 é totalmente compatível com ECMA-262, Edição 1.

JavaScript 1.3 resolveu as inconsistências que o JavaScript 1.2 tinha com o ECMA-262, enquanto manteve todas as funcionalidades adicionais do JavaScript 1.2 exceto == e !=, que foram modificados conforme o ECMA-262.

JavaScript 1.4

JavaScript 1.4 é totalmente compatível com ECMA-262, Edição 1.

A terceira versão da especificação do ECMAScript não foi finalizada quando o JavaScript 1.4 foi liberado.

JavaScript 1.5 JavaScript 1.5 é totalmente compatível com ECMA-262, Edição 3.
Note: ECMA-262, Edição 2 consiste em pequenas alterações de artigo e correções de defeitos da especificação da Edition 1. A versão atual liberada pelo grupo de trabalho TC39 do Ecma Internacional é ECMAScript Edição 5.1

A JavaScript Reference indica quais funcionalidades da linguagem são compatíveis com ECMAScript.

JavaScript sempre incluirá funcionalidades que não são parte da especificação ECMAScript; JavaScript é compatível com ECMAScript, enquanto provém funcionalidades adicionais.

Documentação JavaScript verso Especificação ECMAScript

A especificação ECMAScript é um grupo de requisitos para implementar ECMAScript; é útil se você quer determinar quando uma funcionalidade JavaScript é suportada em outra implementação ECMAScript. Se você planeja escrever código JavaScript que use apenas funcionalidades suportadas pela ECMAScript, então você pode precisar rever a especificação ECMAScript.

O documento ECMAScript não serve para ensinar a programar scripts; use a documentação como uma referência sobre a linguagem JavaScript.

JavaScript e a terminologia ECMAScript

A especificação do uso da terminologia e sintaxe do ECMAScript pode não ser familiar para um programador JavaScript. Embora a descrição da linguagem possa diferir no ECMAScript, a linguagem por si só permanece a mesma. O JavaScript suporta todas as funcionalidades pertencentes a especificação ECMAScript.

A documentação JavaScript descreve aspectos da linguagem que são apropriados ao programador JavaScript. Exemplo:

  • O Global Object não é discutido na documentação JavaScript porque você não precisa usar ele diretamente. Os métodos e propriedades do Global Object, que você usa, são discutidos na documentação JavaScript mas são chamados funções e propriedades de alto nível.
  • O construtor sem parâmetro (zero-argumento) com objetos Number e String não são discutidos na documentação JavaScript, porque o que é gerado é de pouco uso. O construtor Number sem um argumento retorna +0, e um construtor String sem um argumento retorna "" (uma string vazia).

Etiquetas do documento e colaboradores

Etiquetas: 
 Colaboradores desta página: rafaelnery, pkelbert, teoli, LeonardoM
 Última atualização por: rafaelnery,