SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Presente e futuro da
linguagem de programação
JavaScript
WEB302



    Rogério Moraes de Carvalho
    VITA Informática
    @rogeriomc
    rogeriomc.wordpress.com
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
O que é JavaScript?
A linguagem

   Linguagem de scripting
     Baseada em protótipos
     Dinâmica
     Com tipagem fraca
     Funções como primeira classe
   Linguagem de múltiplos paradigmas
     Orientada a objetos
     Imperativa
     Funcional
   Não confundir com Java
Influências da JavaScript
Inspiração na criação

   Base dos princípios chaves da
   arquitetura
      Linguagem Self
      Linguagem Scheme
   Base da sintaxe
      Linguagem C
   Nomes e convenções de
   nomenclatura
      Linguagem Java
História da JavaScript
Criação e evolução inicial da linguagem

              ECMAScript          1a edição do padrão ECMA-262
               (Jun 1997)         da linguagem ECMAScript

     Padronização              A Netscape submeteu a JavaScript
         (Nov 1996)            para a Ecma International (padrão)

         JScript            Implementação da Microsoft
        (Aug 1996)          Internet Explorer 3.0

  JavaScript          Renomeada para JavaScript
    (Dez 1995)        Netscape Navigator 2.0B3 (final)

LiveScript        Por Brendan Eich da Netscape
 (Set 1995)       Netscape Navigator 2.0 Beta
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
História da ECMAScript
Evolução da especificação ECMA-232
                    Harmony         Trabalho em andamento
                Edição 5.1       Alinhamento com o padrão
                 (Jun 2011)      ISO/IEC 16262:2011

               Edição 5       Strict mode, getters e setters,
               (Dez 2009)     suporte a JSON, ...

        Edição 4            Abandonada devido à complexidade
      (Abandonada)          Base da 5a edição e do Harmony

      Edição 3         Expressões regulares, novas instruções
      (Dez 1999)       de controle, try/catch, ...

  Edição 2         Alinhamento com o padrão
  (Jun 1998)       ISO/IEC 16262
Edição 1         Liberação da 1a edição
(Jun 1997)
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Usos da JavaScript
Alguns casos de uso da linguagem

   Scripts do lado do cliente
     Implementada em Web Browsers
     Permite acesso programático a objetos
     no browser
   jQuery – Biblioteca JavaScript
   CoffeeScript compila em JavaScript
   Node.js – Orientado a eventos E/S
     JavaScript do lado do servidor
   Windows Metro Style
     HTML5/CSS3/JavaScript
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Objetos e propriedades
No contexto da linguagem ECMAScript

   JavaScript é baseada em objetos
   Objetos
     Coleções de propriedades
     Do tipo pré-definido: Object
   Propriedades
     São contêineres para outros objetos,
     valores primitivos ou funções
Valores primitivos e funções
No contexto da linguagem ECMAScript

   Valores primitivos
     Um dos seguintes tipos pré-definidos:
        Undefined
        Null
        Boolean
        Number
        String
   Função
     Objeto que pode ser chamado
     Método
        Função associada com um
        objeto via uma propriedade
Objetos pré-definidos
No contexto da linguagem ECMAScript

   Coleção de objetos pré-definidos
     Objeto global        RegExp
        Object            JSON
     Function             Objetos de erro
     Array                   Error
     String                  EvalError
     Boolean                 RangeError
                             ReferenceError
     Number
                             SyntaxError
     Math                    TypeError
     Date                    URIError
Operadores
No contexto da linguagem ECMAScript

   Operadores pré-definidos
     Unários               Atribuição
        ++ –– + –            = *= /= %= +=
        ~ ! delete           –= <<= >>= >>>=
        void typeof          &= ^= |=
     Multiplicativos       Igualdade
        *     /   %          < > <= >=
                             instanceof in
     Aditivos
        +     –            Relacionais
                             ==   !=    ===   !==
     Bitwise
        << >> >>>          Lógicos
        & ^ |                &&   ||
     Condicional           Vírgula
        ? :                  ,
Instruções condicionais
No contexto da linguagem ECMAScript

   Instrução if
     if (expressão) instrução else instrução
     if (expressão) instrução
   Instrução switch
     switch (expressão) {
       [case expressão : Instruçõesopcionais]
       [case expressão : Instruçõesopcionais]
       ...
       [default : Instruçõesopcionais]
     }
Instruções de iteração
No contexto da linguagem ECMAScript

   Instrução for
     for (expressãoopcional; expressãoopcional;
          expressãoopcional) instrução
     for (var listaDeclaraçãoVariável;
          expressãoopcional;
          expressãoopcional) instrução
   Instrução for...in
     for (expressãoLadoEsquerdo in
          expressão) instrução
     for (var declaraçãoVariável in
          expressão) instrução
Instruções de iteração
No contexto da linguagem ECMAScript

   Instrução do...while
     do instrução while (expressão)
   Instrução while
     while (expressão) instrução
   Instrução continue
     continue;
     continue identificador;
   Instrução break
     break;
     break identificador;
Tratamento de erro
No contexto da linguagem ECMAScript

   Instrução try
     try { instruções }
     catch (identificador) { instruçõesopcionais }
     try { instruções }
     finally { instruçõesopcionais }
     try { instruções }
     catch (identificador) { instruçõesopcionais }
     finally { instruçõesopcionais }
   Instrução throw
     throw expressão;
Outras instruções
No contexto da linguagem ECMAScript

   Instrução with
     with (expressão) instrução
        Uma instrução with no modo estrito (ES5)
        é tratado como SyntaxError
   Instrução return
     return;
     return expressão;
   Instrução rotulada
     Identificador : instrução
   Instrução debugger
     debugger;
Funções
No contexto da linguagem ECMAScript

   Funções em JavaScript
     São construções de primeira classe na
     linguagem JavaScript
     São objetos que podem ser chamados
        Podem ter propriedades associadas
   Sintaxe
     Função com identificador
        function identificador (ListaParamsopcional)
        { CorpoDaFunção }
     Função anônima
        function (ListaParamopcional)
        { CorpoDaFunção }
Retorno e herança nas funções
No contexto da linguagem ECMAScript

   Algumas características das funções
     Podem retornar valores
     Sem a instrução return ou com return
     sem expressão retornam undefined
   Herança baseada em protótipos
     Funções herdam de
     Function.prototype
        Que por sua vez herdam de
        Object.prototype
Chamada de funções
No contexto da linguagem ECMAScript

   Modos de chamar uma função
     Diretamente por meio de parênteses
     Indiretamente pelos seguintes métodos
     herdados de Function.prototype
        call(argThis[, arg1[, arg2, ...]])
        apply(argThis, argArray)
   Na chamada não há checagem do
   número de argumentos
     Não há sobrecarga em JavaScript
     Parâmetros não fornecidos
     terão valor undefined
Funções

Rogério Moraes de Carvalho
VITA Informática
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Objetos
No contexto da linguagem ECMAScript

   JavaScript não usa classes
     Diferente de C++, C#, Java e Smalltalk
   Objetos podem ser criados via:
     Notação literal
     Construtor
   Objetos são passados por referência
     Eles nunca são copiados
Literais de objetos
Conceito em JavaScript
                                  Objeto vazio
 var objetoVazio = {};

 var contato = {
   nome: "Maria",                           Objeto simples
   "e-mail": "maria@xyz.com.br"
 };

 var voo = {
   companhia: "TAM",
   codigo: "JJ3702",
   partida: {
     dataHorario: "2011-09-29 09:17",
     cidade: "Brasília",                         Objeto aninhado
     uf: "DF"
   },
   chegada: {
     dataHorario: "2011-09-29 10:47",
     cidade: "São Paulo",
     uf: "SP"
   }
 };
Propriedades
No contexto da linguagem ECMAScript

   Leitura de propriedades
     objeto.propriedade
     objeto[“propriedade”]
   Atualização de propriedades
     Via atribuição
        Se já existir, então será atualizada
        Se não existir, então será adicionada
   Exclusão de propriedades
     delete objeto.propriedade
   Enumeração
     for...in
Objetos e propriedades

Rogério Moraes de Carvalho
VITA Informática
Herança baseada em protótipo
No contexto da linguagem ECMAScript

   Em uma linguagem POO baseada
   em classes
     Estado é transportado por instâncias
     Métodos são transportados por classes
     Herança é de estrutura e
     comportamento
   Em JavaScript
     Estado e métodos são transportados
     por objetos (instâncias)
     Herança é de estrutura,
     comportamento e estado
Herança baseada em protótipo
No contexto da linguagem ECMAScript

   JavaScript não usa classes
     Diferente de C++, C#, Java e Smalltalk
   Objetos podem ser criados via:
     Notação literal
     Construtor
   Cada construtor é uma função
     Que contém uma propriedade nomeada
     prototype
        Usada para implementar herança
        baseada em protótipo e
        propriedades compartilhadas
Herança baseada em protótipo
No contexto da linguagem ECMAScript

   Cada objeto é vinculado um objeto
   protótipo
     Do qual ele pode herdar propriedades
   Método hasOwnProperty(str)
     Verifica se um objeto possui uma
     propriedade particular
     O método não verifica na cadeia de
     protótipos
   Reflexão
     Operador typeof
Objeto global
No contexto da linguagem ECMAScript

   O único objeto global é criado antes
   do controle entrar em qualquer
   contexto de execução
   Em browsers
     Em HTML, o Document Object Model
     define o objeto global como sendo o
     objeto window
Herança baseada em
protótipo

Rogério Moraes de Carvalho
VITA Informática
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
ECMAScript 5
Novidades

  Melhor controle sobre propriedades
     Controle do acesso a propriedades
       Getter (controle sobre a leitura)
       Setter (controle sobre a escrita)
     Controle de atributos de propriedades
       Descritores de propriedades
  Programação mais robusta
     Objetos a prova de adulteração
     Modo estrito (“strict mode”)
ECMAScript 5
Novidades

  Novas APIs
     Novos métodos para Arrays
     JSON (JavaScript Object Notation)
     Function.prototype.bind
Prevenindo a extensibilidade
Novidades da ECMAScript 5

   Object.preventExtensions(obj)
     Previne futuros acréscimos de
     propriedades num objeto
   Object.isExtensible(obj)
     Determina a extensibilidade atual de
     um objeto
Novo tipo de propriedade
Novidade da ECMAScript 5

   Novo tipo de propriedade
     Propriedade de acesso nomeada
        Associa um nome com duas funções de
        acesso (get/set) e um conjunto de atributos
        booleanos
   Mantidos os tipos da ECMAScript 3
     Propriedade de dados nomeada
        Associa um nome com um valor e um
        conjunto de atributos booleanos
     Propriedade interna
        Não tem nome e não é diretamente
        acessível pelos operadores da
        linguagem ECMAScript
Descritores de propriedade
Novidades da ECMAScript 5

   Descritores
     value
        Valor da propriedade
     writable (booleana)
        Se permite a modificação do valor da
        propriedade
     configurable (booleana)
        Se permite a exclusão da propriedade ou a
        modificação de seus descritores
     enumerable (booleana)
          Se permite que a propriedade
          apareça numa enumeração de
          propriedades
Definição de uma propriedade
Novidades da ECMAScript 5

   Object.defineProperty(obj, prop,
   desc)
     Este método permite a definição de
     uma nova propriedade num objeto
     obj
        Objeto
     prop
        Propriedade do objeto a ser criada
     desc
        Descritores da nova propriedade
get/set em propriedades
Novidades da ECMAScript 5

   Object.defineProperty( obj, prop, {
    get: function(){ … },
    set: function(valor) { … }
   });
     Este método permite a definição de
     uma nova propriedade com get/set
     obj
        Objeto
     prop
        Propriedade do objeto a ser
        criada
Criação de objetos
Novidades da ECMAScript 5

   Object.create ( objPrototipo [,
   desc])
     Este método permite a definição de
     uma nova propriedade com get/set
     objPrototipo
        Objeto protótipo
     desc
        Descritores da nova propriedade
Modo estrito
Permite escrever código JavaScript mais restrititivo

(function () {

  "use strict";
   // Função em modo estrito
  var idade;
  Idade = 5; // Erro!

  arguments.caller; // Erro!
  arguments.callee; // Erro!

  var obj = { x: 5 };
  Object.freeze(obj);
  obj.x = 7; // Lança um erro

}());
Novidades da
ECMAScript 5

Rogério Moraes de Carvalho
VITA Informática
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
5 browsers mais usados
Estatística da StatCounter – Mundo




                                              41.89%




                                     27.49%



                                     23.16%




                                              5.19%
                                              1.67%
5 browsers mais usados
Estatística da StatCounter – Brasil




                                               43.05%



                                      31.35%




                                      24.26%




                                               0.78%
                                               0.40%
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Suporte à ECMAScript 5
Existência de suporte no Internet Explorer
Novidade da ECMAScript 5           IE 8     IE 9   IE 10 PP2
Object.create                      Não      Sim      Sim
Object.defineProperty             Sim [1]   Sim      Sim
Object.defineProperties            Não      Sim      Sim
Object.getPropertyOf               Não      Sim      Sim
Object.keys                        Não      Sim      Sim
Object.seal                        Não      Sim      Sim
Object.freeze                      Não      Sim      Sim
Object.preventExtensions           Não      Sim      Sim
Object.isSealed                    Não      Sim      Sim
Object.isFrozen                    Não      Sim      Sim
Object.isExtensible                Não      Sim      Sim
Object.getOwnPropertyDescriptor    Sim      Sim      Sim
Object.getOwnPropertyNames         Não      Sim      Sim
Date.prototype.toISOString         Não      Sim      Sim
Date.now                           Não      Sim      Sim
Array.isArray                      Não      Sim      Sim
JSON                               Sim      Sim      Sim
Suporte à ECMAScript 5
Existência de suporte no Internet Explorer
Novidade da ECMAScript 5                 IE 8   IE 9   IE 10 PP2
Function.prototype.bind                  Não    Sim      Sim
String.prototype.trim                    Não    Sim      Sim
Array.prototype.indexOf                  Não    Sim      Sim
Array.prototype.lastIndexOf              Não    Sim      Sim
Array.prototype.every                    Não    Sim      Sim
Array.prototype.some                     Não    Sim      Sim
Array.prototype.forEach                  Não    Sim      Sim
Array.prototype.map                      Não    Sim      Sim
Array.prototype.filter                   Não    Sim      Sim
Array.prototype.reduce                   Não    Sim      Sim
Array.prototype.reduceRight              Não    Sim      Sim
Getter na inicialização de propriedade   Não    Sim      Sim
Setter na inicialização de propriedade   Não    Sim      Sim
Acesso a propriedades em Strings [1]     Sim    Sim      Sim
Palavras reservadas em nomes de
                                         Não    Sim      Sim
propriedades [2]
Modo estrito (Strict mode) [3]           Não    Não     Sim [4]
Suporte à ECMAScript 5
Existência de suporte no Mozilla Firefox
Recurso da ECMAScript 5           FF 3.5, 3.6   FF 4-6
Object.create                        Não         Sim
Object.defineProperty                Não         Sim
Object.defineProperties              Não         Sim
Object.getPropertyOf                 Sim         Sim
Object.keys                          Não         Sim
Object.seal                          Não         Sim
Object.freeze                        Não         Sim
Object.preventExtensions             Não         Sim
Object.isSealed                      Não         Sim
Object.isFrozen                      Não         Sim
Object.isExtensible                  Não         Sim
Object.getOwnPropertyDescriptor      Não         Sim
Object.getOwnPropertyNames           Não         Sim
Date.prototype.toISOString           Sim         Sim
Date.now                             Sim         Sim
Array.isArray                        Não         Sim
JSON                                 Sim         Sim
Suporte à ECMAScript 5
Existência de suporte no Mozilla Firefox
Recurso da ECMAScript 5                  FF 3.5, 3.6   FF 4-6
Function.prototype.bind                     Não         Sim
String.prototype.trim                       Sim         Sim
Array.prototype.indexOf                     Sim         Sim
Array.prototype.lastIndexOf                 Sim         Sim
Array.prototype.every                       Sim         Sim
Array.prototype.some                        Sim         Sim
Array.prototype.forEach                     Sim         Sim
Array.prototype.map                         Sim         Sim
Array.prototype.filter                      Sim         Sim
Array.prototype.reduce                      Sim         Sim
Array.prototype.reduceRight                 Sim         Sim
Getter na inicialização de propriedade      Sim         Sim
Setter na inicialização de propriedade      Sim         Sim
Acesso a propriedades em Strings [1]        Sim         Sim
Palavras reservadas em nomes de
                                            Sim         Sim
propriedades [2]
Modo estrito (Strict mode) [3]              Não         Sim
Suporte à ECMAScript 5
Existência de suporte no Google Chrome
Recurso da ECMAScript 5           CH 7-12   CH 13, 14
Object.create                      Sim        Sim
Object.defineProperty              Sim        Sim
Object.defineProperties            Sim        Sim
Object.getPropertyOf               Sim        Sim
Object.keys                        Sim        Sim
Object.seal                        Sim        Sim
Object.freeze                      Sim        Sim
Object.preventExtensions           Sim        Sim
Object.isSealed                    Sim        Sim
Object.isFrozen                    Sim        Sim
Object.isExtensible                Sim        Sim
Object.getOwnPropertyDescriptor    Sim        Sim
Object.getOwnPropertyNames         Sim        Sim
Date.prototype.toISOString         Sim        Sim
Date.now                           Sim        Sim
Array.isArray                      Sim        Sim
JSON                               Sim        Sim
Suporte à ECMAScript 5
Existência de suporte no Google Chrome
Recurso da ECMAScript 5                  CH 7-12   CH 13, 14
Function.prototype.bind                   Sim        Sim
String.prototype.trim                     Sim        Sim
Array.prototype.indexOf                   Sim        Sim
Array.prototype.lastIndexOf               Sim        Sim
Array.prototype.every                     Sim        Sim
Array.prototype.some                      Sim        Sim
Array.prototype.forEach                   Sim        Sim
Array.prototype.map                       Sim        Sim
Array.prototype.filter                    Sim        Sim
Array.prototype.reduce                    Sim        Sim
Array.prototype.reduceRight               Sim        Sim
Getter na inicialização de propriedade    Sim        Sim
Setter na inicialização de propriedade    Sim        Sim
Acesso a propriedades em Strings [1]      Sim        Sim
Palavras reservadas em nomes de
                                          Sim        Sim
propriedades [2]
Modo estrito (Strict mode) [3]            Não        Sim
Suporte à ECMAScript 5
Existência de suporte no Apple Safari
Novidade da ECMAScript 5          SF 4   SF 5   SF 5.1
Object.create                     Não    Sim     Sim
Object.defineProperty             Não    Sim     Sim
Object.defineProperties           Não    Sim     Sim
Object.getPropertyOf              Não    Sim     Sim
Object.keys                       Não    Sim     Sim
Object.seal                       Não    Não     Sim
Object.freeze                     Não    Não     Sim
Object.preventExtensions          Não    Não     Sim
Object.isSealed                   Não    Não     Sim
Object.isFrozen                   Não    Não     Sim
Object.isExtensible               Não    Não     Sim
Object.getOwnPropertyDescriptor   Não    Sim     Sim
Object.getOwnPropertyNames        Não    Sim     Sim
Date.prototype.toISOString        Sim    Sim     Sim
Date.now                          Sim    Sim     Sim
Array.isArray                     Não    Sim     Sim
JSON                              Sim    Sim     Sim
Suporte à ECMAScript 5
Existência de suporte no Apple Safari
Novidade da ECMAScript 5                 SF 4   SF 5   SF 5.1
Function.prototype.bind                  Não    Não     Não
String.prototype.trim                    Não    Sim     Sim
Array.prototype.indexOf                  Sim    Sim     Sim
Array.prototype.lastIndexOf              Sim    Sim     Sim
Array.prototype.every                    Sim    Sim     Sim
Array.prototype.some                     Sim    Sim     Sim
Array.prototype.forEach                  Sim    Sim     Sim
Array.prototype.map                      Sim    Sim     Sim
Array.prototype.filter                   Sim    Sim     Sim
Array.prototype.reduce                   Sim    Sim     Sim
Array.prototype.reduceRight              Sim    Sim     Sim
Getter na inicialização de propriedade   Sim    Sim     Sim
Setter na inicialização de propriedade   Sim    Sim     Sim
Acesso a propriedades em Strings [1]     Sim    Sim     Sim
Palavras reservadas em nomes de
                                         Não    Sim     Sim
propriedades [2]
Modo estrito (Strict mode) [3]           Não    Sim     Sim
Suporte à ECMAScript 5
Existência de suporte no WebKit
Recurso da ECMAScript 5                  WebKit
Function.prototype.bind                   Não
String.prototype.trim                     Sim
Array.prototype.indexOf                   Sim
Array.prototype.lastIndexOf               Sim
Array.prototype.every                     Sim
Array.prototype.some                      Sim
Array.prototype.forEach                   Sim
Array.prototype.map                       Sim
Array.prototype.filter                    Sim
Array.prototype.reduce                    Sim
Array.prototype.reduceRight               Sim
Getter na inicialização de propriedade    Sim
Setter na inicialização de propriedade    Sim
Acesso a propriedades em Strings [1]      Sim
Palavras reservadas em nomes de
                                          Sim
propriedades [2]
Modo estrito (Strict mode) [3]            Sim
Suporte à ECMAScript 5
Existência de suporte no WebKit
Recurso da ECMAScript 5           WebKit
Object.create                      Sim
Object.defineProperty              Sim
Object.defineProperties            Sim
Object.getPropertyOf               Sim
Object.keys                        Sim
Object.seal                        Sim
Object.freeze                      Sim
Object.preventExtensions           Sim
Object.isSealed                    Sim
Object.isFrozen                    Sim
Object.isExtensible                Sim
Object.getOwnPropertyDescriptor    Sim
Object.getOwnPropertyNames         Sim
Date.prototype.toISOString         Sim
Date.now                           Sim
Array.isArray                      Sim
JSON                               Sim
Suporte à ECMAScript 5
Existência de suporte no Opera
Recurso da ECMAScript 5           OP 10.50 – 11.50   OP 12 Beta
Object.create                           Não             Sim
Object.defineProperty                   Não             Sim
Object.defineProperties                 Não             Sim
Object.getPropertyOf                    Não             Sim
Object.keys                             Não             Sim
Object.seal                             Não             Sim
Object.freeze                           Não             Sim
Object.preventExtensions                Não             Sim
Object.isSealed                         Não             Sim
Object.isFrozen                         Não             Sim
Object.isExtensible                     Não             Sim
Object.getOwnPropertyDescriptor         Não             Sim
Object.getOwnPropertyNames              Não             Sim
Date.prototype.toISOString              Sim             Sim
Date.now                                Sim             Sim
Array.isArray                           Sim             Sim
JSON                                    Sim             Sim
Suporte à ECMAScript 5
Existência de suporte no Opera
Recurso da ECMAScript 5                  OP 10.50-11.50   OP 12
Function.prototype.bind                       Não         Sim
String.prototype.trim                         Sim         Sim
Array.prototype.indexOf                       Sim         Sim
Array.prototype.lastIndexOf                   Sim         Sim
Array.prototype.every                         Sim         Sim
Array.prototype.some                          Sim         Sim
Array.prototype.forEach                       Sim         Sim
Array.prototype.map                           Sim         Sim
Array.prototype.filter                        Sim         Sim
Array.prototype.reduce                        Sim         Sim
Array.prototype.reduceRight                   Sim         Sim
Getter na inicialização de propriedade        Sim         Sim
Setter na inicialização de propriedade        Sim         Sim
Acesso a propriedades em Strings [1]          Sim         Sim
Palavras reservadas em nomes de
                                              Não         Sim
propriedades [2]
Modo estrito (Strict mode) [3]                Não         Sim
Agenda
Presente e futuro da linguagem JavaScript

   A linguagem JavaScript
   A linguagem ECMAScript
   Usos mais comuns da JavaScript
   Conceitos iniciais da JavaScript
   Orientação a objetos em JavaScript
   Novidades da ECMAScript 5
   Browsers mais usados
   Suporte à ECMAScript 5
   Conclusão
Considerações finais
Dicas

   JavaScript é uma linguagem de
   programação simples, poderosa e flexível
   Pesquise códigos de bibliotecas
        Analise os códigos de implementação das
        suas bibliotecas JavaScript favoritas
   Teste seus códigos JavaScript nos
   principais browsers
        Microsoft Internet Explorer, Mozilla Firefox,
        Google Chrome, Apple Safari, Opera, ...
   Aprenda sobre as novidades da
   ECMAScript 5
        Considere optar pelo modo estrito
Conteúdo Relacionado
  Standard ECMA-262
  ECMAScript Language Specification
  Edition 5.1 (June 2011)
  http://www.ecma-
  international.org/publications/standards/Ecma-262.htm


  Livro: JavaScript: The Good Parts
  Autor: Douglas Crockford
  Editora: O'Reilly
  oreilly.com/catalog/9780596517748


  Livro: Secrets of the JavaScript Ninja
          Early Access Edition
  Autor: John Resig e Bear Bibeault
  Editora: Manning
  manning.com/resig/
Palestras Relacionadas
  QS42 – HTML5, CSS3 e JavaScript em 30
  minutos
  Victor Cavalcante (29/09 11:20 às 11:50)


  WEB401 – Mergulhe no HTML 5
  Alex Kondera, Murilo Curti (30/09 8:30 às 9:40)


  WEB301 – Plataforma Web Microsoft: Infinitas
  possibilidades
  Murilo Curti, Rogério Cordeiro (29/09 11:20 às 12:30)
Get the free mobile app for your phone
http:/ / gettag.mobi




                                         http://technet.microsoft.com/pt-br




Get the free mobile app for your phone
http:/ / gettag.mobi




                                         http://msdn.microsoft.com/pt-br
Não esqueça de
preencher sua avaliação
        online
www.teched.com.br/avaliacao


              Get the free mobile app for your phone
              http:/ / gettag.mobi
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
  The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT
                                                 MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Mais conteúdo relacionado

Mais procurados

TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5Rogério Moraes de Carvalho
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.netAndre Nascimento
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GOgptavares
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemRogério Moraes de Carvalho
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)André Justi
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Maellson Marques
 

Mais procurados (20)

Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 
Apostila de Introdução ao C#.net
Apostila de Introdução ao C#.netApostila de Introdução ao C#.net
Apostila de Introdução ao C#.net
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Seminário sobre GO
Seminário sobre GOSeminário sobre GO
Seminário sobre GO
 
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvemASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
ASP.NET Core, .NET Core e EF Core: multiplataforma e otimizados para a nuvem
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
Csharp
CsharpCsharp
Csharp
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
 

Semelhante a TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação JavaScript

Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano Ramalho
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05t34m0nana
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
PHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsPHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsAryel Tupinambá
 

Semelhante a TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação JavaScript (20)

Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Javascript
JavascriptJavascript
Javascript
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
JavaCC
JavaCCJavaCC
JavaCC
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
1.introducao java
1.introducao java1.introducao java
1.introducao java
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Java script1
Java script1Java script1
Java script1
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
PHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsPHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel Collections
 

Mais de Rogério Moraes de Carvalho

TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework CoreRogério Moraes de Carvalho
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF CoreRogério Moraes de Carvalho
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Rogério Moraes de Carvalho
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoRogério Moraes de Carvalho
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...Rogério Moraes de Carvalho
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...Rogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realRogério Moraes de Carvalho
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebRogério Moraes de Carvalho
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisRogério Moraes de Carvalho
 

Mais de Rogério Moraes de Carvalho (20)

Docker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no Azure
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
Tecnologias XML e XML no SQL Server 2016
Tecnologias XML eXML no SQL Server 2016Tecnologias XML eXML no SQL Server 2016
Tecnologias XML e XML no SQL Server 2016
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework CoreUm novo .NET multiplataforma:ASP.NET Core, .NET Core e Entity Framework Core
Um novo .NET multiplataforma: ASP.NET Core, .NET Core e Entity Framework Core
 
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF CoreExplorando o novo .NET multiplataforma:ASP.NET Core, .NET Core e EF Core
Explorando o novo .NET multiplataforma: ASP.NET Core, .NET Core e EF Core
 
Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016Suporte XML nativo no SQL Server 2014/2016
Suporte XML nativo no SQL Server 2014/2016
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Uma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programaçãoUma visão de mercado das linguagens de programação
Uma visão de mercado das linguagens de programação
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
`
``
`
 
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
HTML5 + CSS3 em múltiplos browsers, em múltiplas plataformas e em múltiplos d...
 
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...The Developer's Conference (TDC) 2013 - Florianópolis:  HTML5 + CSS3 em múlti...
The Developer's Conference (TDC) 2013 - Florianópolis: HTML5 + CSS3 em múlti...
 
MVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo realMVP Virtual Conference 2013: Cenário do mundo real
MVP Virtual Conference 2013: Cenário do mundo real
 
MVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões WebMVP Virtual Conference 2013: Suporte a padrões Web
MVP Virtual Conference 2013: Suporte a padrões Web
 
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveisSeminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
Seminfo 2012 (Urutaí-GO): Desenvolvimento para dispositivos móveis
 

Último

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação JavaScript

  • 1.
  • 2. Presente e futuro da linguagem de programação JavaScript WEB302 Rogério Moraes de Carvalho VITA Informática @rogeriomc rogeriomc.wordpress.com
  • 3. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 4. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 5. O que é JavaScript? A linguagem Linguagem de scripting Baseada em protótipos Dinâmica Com tipagem fraca Funções como primeira classe Linguagem de múltiplos paradigmas Orientada a objetos Imperativa Funcional Não confundir com Java
  • 6. Influências da JavaScript Inspiração na criação Base dos princípios chaves da arquitetura Linguagem Self Linguagem Scheme Base da sintaxe Linguagem C Nomes e convenções de nomenclatura Linguagem Java
  • 7. História da JavaScript Criação e evolução inicial da linguagem ECMAScript 1a edição do padrão ECMA-262 (Jun 1997) da linguagem ECMAScript Padronização A Netscape submeteu a JavaScript (Nov 1996) para a Ecma International (padrão) JScript Implementação da Microsoft (Aug 1996) Internet Explorer 3.0 JavaScript Renomeada para JavaScript (Dez 1995) Netscape Navigator 2.0B3 (final) LiveScript Por Brendan Eich da Netscape (Set 1995) Netscape Navigator 2.0 Beta
  • 8. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 9. História da ECMAScript Evolução da especificação ECMA-232 Harmony Trabalho em andamento Edição 5.1 Alinhamento com o padrão (Jun 2011) ISO/IEC 16262:2011 Edição 5 Strict mode, getters e setters, (Dez 2009) suporte a JSON, ... Edição 4 Abandonada devido à complexidade (Abandonada) Base da 5a edição e do Harmony Edição 3 Expressões regulares, novas instruções (Dez 1999) de controle, try/catch, ... Edição 2 Alinhamento com o padrão (Jun 1998) ISO/IEC 16262 Edição 1 Liberação da 1a edição (Jun 1997)
  • 10. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 11. Usos da JavaScript Alguns casos de uso da linguagem Scripts do lado do cliente Implementada em Web Browsers Permite acesso programático a objetos no browser jQuery – Biblioteca JavaScript CoffeeScript compila em JavaScript Node.js – Orientado a eventos E/S JavaScript do lado do servidor Windows Metro Style HTML5/CSS3/JavaScript
  • 12. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 13. Objetos e propriedades No contexto da linguagem ECMAScript JavaScript é baseada em objetos Objetos Coleções de propriedades Do tipo pré-definido: Object Propriedades São contêineres para outros objetos, valores primitivos ou funções
  • 14. Valores primitivos e funções No contexto da linguagem ECMAScript Valores primitivos Um dos seguintes tipos pré-definidos: Undefined Null Boolean Number String Função Objeto que pode ser chamado Método Função associada com um objeto via uma propriedade
  • 15. Objetos pré-definidos No contexto da linguagem ECMAScript Coleção de objetos pré-definidos Objeto global RegExp Object JSON Function Objetos de erro Array Error String EvalError Boolean RangeError ReferenceError Number SyntaxError Math TypeError Date URIError
  • 16. Operadores No contexto da linguagem ECMAScript Operadores pré-definidos Unários Atribuição ++ –– + – = *= /= %= += ~ ! delete –= <<= >>= >>>= void typeof &= ^= |= Multiplicativos Igualdade * / % < > <= >= instanceof in Aditivos + – Relacionais == != === !== Bitwise << >> >>> Lógicos & ^ | && || Condicional Vírgula ? : ,
  • 17. Instruções condicionais No contexto da linguagem ECMAScript Instrução if if (expressão) instrução else instrução if (expressão) instrução Instrução switch switch (expressão) { [case expressão : Instruçõesopcionais] [case expressão : Instruçõesopcionais] ... [default : Instruçõesopcionais] }
  • 18. Instruções de iteração No contexto da linguagem ECMAScript Instrução for for (expressãoopcional; expressãoopcional; expressãoopcional) instrução for (var listaDeclaraçãoVariável; expressãoopcional; expressãoopcional) instrução Instrução for...in for (expressãoLadoEsquerdo in expressão) instrução for (var declaraçãoVariável in expressão) instrução
  • 19. Instruções de iteração No contexto da linguagem ECMAScript Instrução do...while do instrução while (expressão) Instrução while while (expressão) instrução Instrução continue continue; continue identificador; Instrução break break; break identificador;
  • 20. Tratamento de erro No contexto da linguagem ECMAScript Instrução try try { instruções } catch (identificador) { instruçõesopcionais } try { instruções } finally { instruçõesopcionais } try { instruções } catch (identificador) { instruçõesopcionais } finally { instruçõesopcionais } Instrução throw throw expressão;
  • 21. Outras instruções No contexto da linguagem ECMAScript Instrução with with (expressão) instrução Uma instrução with no modo estrito (ES5) é tratado como SyntaxError Instrução return return; return expressão; Instrução rotulada Identificador : instrução Instrução debugger debugger;
  • 22. Funções No contexto da linguagem ECMAScript Funções em JavaScript São construções de primeira classe na linguagem JavaScript São objetos que podem ser chamados Podem ter propriedades associadas Sintaxe Função com identificador function identificador (ListaParamsopcional) { CorpoDaFunção } Função anônima function (ListaParamopcional) { CorpoDaFunção }
  • 23. Retorno e herança nas funções No contexto da linguagem ECMAScript Algumas características das funções Podem retornar valores Sem a instrução return ou com return sem expressão retornam undefined Herança baseada em protótipos Funções herdam de Function.prototype Que por sua vez herdam de Object.prototype
  • 24. Chamada de funções No contexto da linguagem ECMAScript Modos de chamar uma função Diretamente por meio de parênteses Indiretamente pelos seguintes métodos herdados de Function.prototype call(argThis[, arg1[, arg2, ...]]) apply(argThis, argArray) Na chamada não há checagem do número de argumentos Não há sobrecarga em JavaScript Parâmetros não fornecidos terão valor undefined
  • 25. Funções Rogério Moraes de Carvalho VITA Informática
  • 26. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 27. Objetos No contexto da linguagem ECMAScript JavaScript não usa classes Diferente de C++, C#, Java e Smalltalk Objetos podem ser criados via: Notação literal Construtor Objetos são passados por referência Eles nunca são copiados
  • 28. Literais de objetos Conceito em JavaScript Objeto vazio var objetoVazio = {}; var contato = { nome: "Maria", Objeto simples "e-mail": "maria@xyz.com.br" }; var voo = { companhia: "TAM", codigo: "JJ3702", partida: { dataHorario: "2011-09-29 09:17", cidade: "Brasília", Objeto aninhado uf: "DF" }, chegada: { dataHorario: "2011-09-29 10:47", cidade: "São Paulo", uf: "SP" } };
  • 29. Propriedades No contexto da linguagem ECMAScript Leitura de propriedades objeto.propriedade objeto[“propriedade”] Atualização de propriedades Via atribuição Se já existir, então será atualizada Se não existir, então será adicionada Exclusão de propriedades delete objeto.propriedade Enumeração for...in
  • 30. Objetos e propriedades Rogério Moraes de Carvalho VITA Informática
  • 31. Herança baseada em protótipo No contexto da linguagem ECMAScript Em uma linguagem POO baseada em classes Estado é transportado por instâncias Métodos são transportados por classes Herança é de estrutura e comportamento Em JavaScript Estado e métodos são transportados por objetos (instâncias) Herança é de estrutura, comportamento e estado
  • 32. Herança baseada em protótipo No contexto da linguagem ECMAScript JavaScript não usa classes Diferente de C++, C#, Java e Smalltalk Objetos podem ser criados via: Notação literal Construtor Cada construtor é uma função Que contém uma propriedade nomeada prototype Usada para implementar herança baseada em protótipo e propriedades compartilhadas
  • 33. Herança baseada em protótipo No contexto da linguagem ECMAScript Cada objeto é vinculado um objeto protótipo Do qual ele pode herdar propriedades Método hasOwnProperty(str) Verifica se um objeto possui uma propriedade particular O método não verifica na cadeia de protótipos Reflexão Operador typeof
  • 34. Objeto global No contexto da linguagem ECMAScript O único objeto global é criado antes do controle entrar em qualquer contexto de execução Em browsers Em HTML, o Document Object Model define o objeto global como sendo o objeto window
  • 35. Herança baseada em protótipo Rogério Moraes de Carvalho VITA Informática
  • 36. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 37. ECMAScript 5 Novidades Melhor controle sobre propriedades Controle do acesso a propriedades Getter (controle sobre a leitura) Setter (controle sobre a escrita) Controle de atributos de propriedades Descritores de propriedades Programação mais robusta Objetos a prova de adulteração Modo estrito (“strict mode”)
  • 38. ECMAScript 5 Novidades Novas APIs Novos métodos para Arrays JSON (JavaScript Object Notation) Function.prototype.bind
  • 39. Prevenindo a extensibilidade Novidades da ECMAScript 5 Object.preventExtensions(obj) Previne futuros acréscimos de propriedades num objeto Object.isExtensible(obj) Determina a extensibilidade atual de um objeto
  • 40. Novo tipo de propriedade Novidade da ECMAScript 5 Novo tipo de propriedade Propriedade de acesso nomeada Associa um nome com duas funções de acesso (get/set) e um conjunto de atributos booleanos Mantidos os tipos da ECMAScript 3 Propriedade de dados nomeada Associa um nome com um valor e um conjunto de atributos booleanos Propriedade interna Não tem nome e não é diretamente acessível pelos operadores da linguagem ECMAScript
  • 41. Descritores de propriedade Novidades da ECMAScript 5 Descritores value Valor da propriedade writable (booleana) Se permite a modificação do valor da propriedade configurable (booleana) Se permite a exclusão da propriedade ou a modificação de seus descritores enumerable (booleana) Se permite que a propriedade apareça numa enumeração de propriedades
  • 42. Definição de uma propriedade Novidades da ECMAScript 5 Object.defineProperty(obj, prop, desc) Este método permite a definição de uma nova propriedade num objeto obj Objeto prop Propriedade do objeto a ser criada desc Descritores da nova propriedade
  • 43. get/set em propriedades Novidades da ECMAScript 5 Object.defineProperty( obj, prop, { get: function(){ … }, set: function(valor) { … } }); Este método permite a definição de uma nova propriedade com get/set obj Objeto prop Propriedade do objeto a ser criada
  • 44. Criação de objetos Novidades da ECMAScript 5 Object.create ( objPrototipo [, desc]) Este método permite a definição de uma nova propriedade com get/set objPrototipo Objeto protótipo desc Descritores da nova propriedade
  • 45. Modo estrito Permite escrever código JavaScript mais restrititivo (function () { "use strict"; // Função em modo estrito var idade; Idade = 5; // Erro! arguments.caller; // Erro! arguments.callee; // Erro! var obj = { x: 5 }; Object.freeze(obj); obj.x = 7; // Lança um erro }());
  • 46. Novidades da ECMAScript 5 Rogério Moraes de Carvalho VITA Informática
  • 47. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 48. 5 browsers mais usados Estatística da StatCounter – Mundo 41.89% 27.49% 23.16% 5.19% 1.67%
  • 49. 5 browsers mais usados Estatística da StatCounter – Brasil 43.05% 31.35% 24.26% 0.78% 0.40%
  • 50. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 51. Suporte à ECMAScript 5 Existência de suporte no Internet Explorer Novidade da ECMAScript 5 IE 8 IE 9 IE 10 PP2 Object.create Não Sim Sim Object.defineProperty Sim [1] Sim Sim Object.defineProperties Não Sim Sim Object.getPropertyOf Não Sim Sim Object.keys Não Sim Sim Object.seal Não Sim Sim Object.freeze Não Sim Sim Object.preventExtensions Não Sim Sim Object.isSealed Não Sim Sim Object.isFrozen Não Sim Sim Object.isExtensible Não Sim Sim Object.getOwnPropertyDescriptor Sim Sim Sim Object.getOwnPropertyNames Não Sim Sim Date.prototype.toISOString Não Sim Sim Date.now Não Sim Sim Array.isArray Não Sim Sim JSON Sim Sim Sim
  • 52. Suporte à ECMAScript 5 Existência de suporte no Internet Explorer Novidade da ECMAScript 5 IE 8 IE 9 IE 10 PP2 Function.prototype.bind Não Sim Sim String.prototype.trim Não Sim Sim Array.prototype.indexOf Não Sim Sim Array.prototype.lastIndexOf Não Sim Sim Array.prototype.every Não Sim Sim Array.prototype.some Não Sim Sim Array.prototype.forEach Não Sim Sim Array.prototype.map Não Sim Sim Array.prototype.filter Não Sim Sim Array.prototype.reduce Não Sim Sim Array.prototype.reduceRight Não Sim Sim Getter na inicialização de propriedade Não Sim Sim Setter na inicialização de propriedade Não Sim Sim Acesso a propriedades em Strings [1] Sim Sim Sim Palavras reservadas em nomes de Não Sim Sim propriedades [2] Modo estrito (Strict mode) [3] Não Não Sim [4]
  • 53. Suporte à ECMAScript 5 Existência de suporte no Mozilla Firefox Recurso da ECMAScript 5 FF 3.5, 3.6 FF 4-6 Object.create Não Sim Object.defineProperty Não Sim Object.defineProperties Não Sim Object.getPropertyOf Sim Sim Object.keys Não Sim Object.seal Não Sim Object.freeze Não Sim Object.preventExtensions Não Sim Object.isSealed Não Sim Object.isFrozen Não Sim Object.isExtensible Não Sim Object.getOwnPropertyDescriptor Não Sim Object.getOwnPropertyNames Não Sim Date.prototype.toISOString Sim Sim Date.now Sim Sim Array.isArray Não Sim JSON Sim Sim
  • 54. Suporte à ECMAScript 5 Existência de suporte no Mozilla Firefox Recurso da ECMAScript 5 FF 3.5, 3.6 FF 4-6 Function.prototype.bind Não Sim String.prototype.trim Sim Sim Array.prototype.indexOf Sim Sim Array.prototype.lastIndexOf Sim Sim Array.prototype.every Sim Sim Array.prototype.some Sim Sim Array.prototype.forEach Sim Sim Array.prototype.map Sim Sim Array.prototype.filter Sim Sim Array.prototype.reduce Sim Sim Array.prototype.reduceRight Sim Sim Getter na inicialização de propriedade Sim Sim Setter na inicialização de propriedade Sim Sim Acesso a propriedades em Strings [1] Sim Sim Palavras reservadas em nomes de Sim Sim propriedades [2] Modo estrito (Strict mode) [3] Não Sim
  • 55. Suporte à ECMAScript 5 Existência de suporte no Google Chrome Recurso da ECMAScript 5 CH 7-12 CH 13, 14 Object.create Sim Sim Object.defineProperty Sim Sim Object.defineProperties Sim Sim Object.getPropertyOf Sim Sim Object.keys Sim Sim Object.seal Sim Sim Object.freeze Sim Sim Object.preventExtensions Sim Sim Object.isSealed Sim Sim Object.isFrozen Sim Sim Object.isExtensible Sim Sim Object.getOwnPropertyDescriptor Sim Sim Object.getOwnPropertyNames Sim Sim Date.prototype.toISOString Sim Sim Date.now Sim Sim Array.isArray Sim Sim JSON Sim Sim
  • 56. Suporte à ECMAScript 5 Existência de suporte no Google Chrome Recurso da ECMAScript 5 CH 7-12 CH 13, 14 Function.prototype.bind Sim Sim String.prototype.trim Sim Sim Array.prototype.indexOf Sim Sim Array.prototype.lastIndexOf Sim Sim Array.prototype.every Sim Sim Array.prototype.some Sim Sim Array.prototype.forEach Sim Sim Array.prototype.map Sim Sim Array.prototype.filter Sim Sim Array.prototype.reduce Sim Sim Array.prototype.reduceRight Sim Sim Getter na inicialização de propriedade Sim Sim Setter na inicialização de propriedade Sim Sim Acesso a propriedades em Strings [1] Sim Sim Palavras reservadas em nomes de Sim Sim propriedades [2] Modo estrito (Strict mode) [3] Não Sim
  • 57. Suporte à ECMAScript 5 Existência de suporte no Apple Safari Novidade da ECMAScript 5 SF 4 SF 5 SF 5.1 Object.create Não Sim Sim Object.defineProperty Não Sim Sim Object.defineProperties Não Sim Sim Object.getPropertyOf Não Sim Sim Object.keys Não Sim Sim Object.seal Não Não Sim Object.freeze Não Não Sim Object.preventExtensions Não Não Sim Object.isSealed Não Não Sim Object.isFrozen Não Não Sim Object.isExtensible Não Não Sim Object.getOwnPropertyDescriptor Não Sim Sim Object.getOwnPropertyNames Não Sim Sim Date.prototype.toISOString Sim Sim Sim Date.now Sim Sim Sim Array.isArray Não Sim Sim JSON Sim Sim Sim
  • 58. Suporte à ECMAScript 5 Existência de suporte no Apple Safari Novidade da ECMAScript 5 SF 4 SF 5 SF 5.1 Function.prototype.bind Não Não Não String.prototype.trim Não Sim Sim Array.prototype.indexOf Sim Sim Sim Array.prototype.lastIndexOf Sim Sim Sim Array.prototype.every Sim Sim Sim Array.prototype.some Sim Sim Sim Array.prototype.forEach Sim Sim Sim Array.prototype.map Sim Sim Sim Array.prototype.filter Sim Sim Sim Array.prototype.reduce Sim Sim Sim Array.prototype.reduceRight Sim Sim Sim Getter na inicialização de propriedade Sim Sim Sim Setter na inicialização de propriedade Sim Sim Sim Acesso a propriedades em Strings [1] Sim Sim Sim Palavras reservadas em nomes de Não Sim Sim propriedades [2] Modo estrito (Strict mode) [3] Não Sim Sim
  • 59. Suporte à ECMAScript 5 Existência de suporte no WebKit Recurso da ECMAScript 5 WebKit Function.prototype.bind Não String.prototype.trim Sim Array.prototype.indexOf Sim Array.prototype.lastIndexOf Sim Array.prototype.every Sim Array.prototype.some Sim Array.prototype.forEach Sim Array.prototype.map Sim Array.prototype.filter Sim Array.prototype.reduce Sim Array.prototype.reduceRight Sim Getter na inicialização de propriedade Sim Setter na inicialização de propriedade Sim Acesso a propriedades em Strings [1] Sim Palavras reservadas em nomes de Sim propriedades [2] Modo estrito (Strict mode) [3] Sim
  • 60. Suporte à ECMAScript 5 Existência de suporte no WebKit Recurso da ECMAScript 5 WebKit Object.create Sim Object.defineProperty Sim Object.defineProperties Sim Object.getPropertyOf Sim Object.keys Sim Object.seal Sim Object.freeze Sim Object.preventExtensions Sim Object.isSealed Sim Object.isFrozen Sim Object.isExtensible Sim Object.getOwnPropertyDescriptor Sim Object.getOwnPropertyNames Sim Date.prototype.toISOString Sim Date.now Sim Array.isArray Sim JSON Sim
  • 61. Suporte à ECMAScript 5 Existência de suporte no Opera Recurso da ECMAScript 5 OP 10.50 – 11.50 OP 12 Beta Object.create Não Sim Object.defineProperty Não Sim Object.defineProperties Não Sim Object.getPropertyOf Não Sim Object.keys Não Sim Object.seal Não Sim Object.freeze Não Sim Object.preventExtensions Não Sim Object.isSealed Não Sim Object.isFrozen Não Sim Object.isExtensible Não Sim Object.getOwnPropertyDescriptor Não Sim Object.getOwnPropertyNames Não Sim Date.prototype.toISOString Sim Sim Date.now Sim Sim Array.isArray Sim Sim JSON Sim Sim
  • 62. Suporte à ECMAScript 5 Existência de suporte no Opera Recurso da ECMAScript 5 OP 10.50-11.50 OP 12 Function.prototype.bind Não Sim String.prototype.trim Sim Sim Array.prototype.indexOf Sim Sim Array.prototype.lastIndexOf Sim Sim Array.prototype.every Sim Sim Array.prototype.some Sim Sim Array.prototype.forEach Sim Sim Array.prototype.map Sim Sim Array.prototype.filter Sim Sim Array.prototype.reduce Sim Sim Array.prototype.reduceRight Sim Sim Getter na inicialização de propriedade Sim Sim Setter na inicialização de propriedade Sim Sim Acesso a propriedades em Strings [1] Sim Sim Palavras reservadas em nomes de Não Sim propriedades [2] Modo estrito (Strict mode) [3] Não Sim
  • 63. Agenda Presente e futuro da linguagem JavaScript A linguagem JavaScript A linguagem ECMAScript Usos mais comuns da JavaScript Conceitos iniciais da JavaScript Orientação a objetos em JavaScript Novidades da ECMAScript 5 Browsers mais usados Suporte à ECMAScript 5 Conclusão
  • 64. Considerações finais Dicas JavaScript é uma linguagem de programação simples, poderosa e flexível Pesquise códigos de bibliotecas Analise os códigos de implementação das suas bibliotecas JavaScript favoritas Teste seus códigos JavaScript nos principais browsers Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari, Opera, ... Aprenda sobre as novidades da ECMAScript 5 Considere optar pelo modo estrito
  • 65. Conteúdo Relacionado Standard ECMA-262 ECMAScript Language Specification Edition 5.1 (June 2011) http://www.ecma- international.org/publications/standards/Ecma-262.htm Livro: JavaScript: The Good Parts Autor: Douglas Crockford Editora: O'Reilly oreilly.com/catalog/9780596517748 Livro: Secrets of the JavaScript Ninja Early Access Edition Autor: John Resig e Bear Bibeault Editora: Manning manning.com/resig/
  • 66. Palestras Relacionadas QS42 – HTML5, CSS3 e JavaScript em 30 minutos Victor Cavalcante (29/09 11:20 às 11:50) WEB401 – Mergulhe no HTML 5 Alex Kondera, Murilo Curti (30/09 8:30 às 9:40) WEB301 – Plataforma Web Microsoft: Infinitas possibilidades Murilo Curti, Rogério Cordeiro (29/09 11:20 às 12:30)
  • 67. Get the free mobile app for your phone http:/ / gettag.mobi http://technet.microsoft.com/pt-br Get the free mobile app for your phone http:/ / gettag.mobi http://msdn.microsoft.com/pt-br
  • 68. Não esqueça de preencher sua avaliação online www.teched.com.br/avaliacao Get the free mobile app for your phone http:/ / gettag.mobi
  • 69. © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.