cefet_web

JavaScript Parte 3

Template strings, Criação de objetos
e Função seta


Na última aula (1/2)

  1. Variáveis: let, const e var 🗡❌ (tipos de dados são inferidos)
  2. Tipos:
    • 1. Boolean
    • 2. Number
    • 3. String
    • 4. Null
    • 5. Undefined
    • 6. Symbol
    • 7. Object

Na última aula (2/2)


Roteiro

  1. Template strings
  2. Criação de objetos
    • Funções construtoras
    • Classes
  3. Função seta

Template Strings

Criando strings bacanudas


O tipo 3. String


Template Strings: interpolação de valores (1/2)


Template Strings: interpolação de valores (2/2)


Template Strings: texto multilinha


Criação de objetos

Diferentes formas de instanciação


Instanciação de Objetos (1/2)


Instanciação de Objetos (2/2)


E se quiser “forçar” uma forma para criar objetos?

  1. Função construtora (forma antiga)
  2. Classe (veremos em outra aula)

Função construtora


Características da função construtora


Função construtora e métodos


Exemplo: Lista de contatos (1/4)


Exemplo: Lista de contatos (2/4)


Exemplo: Lista de contatos (3/4)


Exemplo: Lista de contatos (4/4)


O Prototype (protótipo) (1/2)


O Prototype (2/2)


Invocação de funções


(1) Invocação de funções (como função)

  1. Como uma função propriamente dita, ou uma subrotina:
    • Quando a função não está associada a um objeto
      function soma(a, b) {
        return a + b;
      }
      soma(40, 2);      // invocação. Retorna 42
      let s = soma;
      s(21, 21);        // invocação. Retorna 42
      
      • O valor de this é sempre definido para o objeto global window
        • Isto foi um erro de projeto da linguagem :worried:

(2) Invocação de funções (como método)

  1. Como um método (função que pertence a um objeto):
    const contador = {
      valor: 0,
      incrementa: function(qtde) {
        this.valor += qtde ? qtde : 1;
      }
    }
    contador.incrementa();    // contador.valor = 1
    contador.incrementa(10);  // contador.value = 11
    
    • this aponta para a instância do objeto dono do método invocado

Invocação de funções (como método vs função)


Invocação de funções (método vs função cont.)


(3) Invocação de funções (como construtor)

  1. Quando uma função é invocada, precedida pelo operador new, dizemos que a função é um construtor:
    function Contato(nome) {
      this.nome = nome;
    }
    let presidente = new Contato('Seu Adamastor');  // construtor
    
    • Por causa do operador new, três coisas acontecem:
      1. Um objeto vazio é criado e seu prototype é o mesmo do da função
      2. O valor de this dentro da função aponta para o novo objeto
      3. Se não houver return, this é retornado automaticamente

Caveat da invocação por construtor


Herança


Herança pseudo-clássica


Função Seta

A 3ª forma para funções


Função tradicional e anônima


Função seta: sintaxe


Exemplo: funções seta com vetores

  1. Pegar apenas usuários que começam com letra ‘F’:
    • usuarios.filter(function(nome) {
        return nome.startsWith('F');
      });
      
      usuarios.filter(nome => nome.startsWith('F'));
           
           
      
  2. Buscar pelo aluno com uma matrícula:
    • alunos.find(function(aluno) {
        return aluno.matricula === '2005046102';
      });
      
      alunos.find(al => al.matricula === '2005046102');
           
           
      
  3. Vetor com os quadrados do original:
    • numeros.map(function(numero) {
        return numero ** 2;
      });
      
      numeros.map(numero => numero ** 2);
      
      
      

Mantendo o this léxico


Referências

  1. Capítulos 3, 4 e 5 do livro “Javascript: The Good Parts”
  2. Capítulos 9 e 10 do livro “Head First: JavaScript”
  3. Mozilla Developer Network (MDN)
  4. Como prototypes funcionam
  5. Entendendo prototypes