JavaScript - Criando Objetos

 Hoje vamos apresentar o conceito de objetos na linguagem JavaScript

O ambiente usado para testar o código JavaScript neste artigo requer a instalação dos seguintes recursos:

JavaScript - Objetos

Uma classe representa a estrutura de um objeto, e, toda classe tem certos métodos e propriedades usadas pelo objeto, enquanto um objeto é uma instância de uma classe.

JavaScript é uma linguagem baseada em protótipos e em objetos. Em uma linguagem baseada em classes como C# e Java, primeiro temos que definir a classe que contém alguns métodos e propriedades e, em seguida, usar seu construtor para criar objetos.

Em JavaScript, qualquer objeto pode ser usado como um template para criar novos objetos e usar as propriedades ou métodos definidos dentro dele. Novos objetos também podem definir suas próprias propriedades ou métodos e podem ser associados como um protótipo para outro objeto.

Um objeto JavaScript é uma coleção de propriedades em que cada propriedade possui um nome e um valor, semelhante a Hash, Map ou Dictionary.

O nome de uma propriedade pode ser qualquer string, incluindo uma string vazia e o valor pode ser qualquer valor, como uma string, Boolean, number e null, mas não pode ser undefined.

As propriedades do objeto podem ser definidas mesmo depois de você começar a usar o objeto.

O ECMAScript 6, no entanto, introduziu classes na linguagem JavaScript, que é um açúcar sintático sobre os paradigmas existentes e torna mais fácil para os desenvolvedores escreverem um código mais limpo para criar objetos.

Definindo objetos usando a notação literal

A notação literal de objeto usa listas separadas por vírgula de pares de valores de nome envolvidos em chaves.

Um objeto pode ser criado usando a  notação com colchetes  {…} com uma lista opcional de propriedades, sendo que uma propriedade é um par "chave: valor", em que chave é uma string (também chamada de "nome da propriedade") e o valor pode ser qualquer coisa.

Aqui está a representação básica de um objeto pessoa na notação literal do objeto:


  var pessoa = { id: "001", nome: "Maria", Ativo: true, Idade: 35 };
 
  1. A primeira propriedade tem o nome id e o valor 001;
  2. A segunda tem o nome nome e o valor Maria;
  3. A terceira tem o nome Ativo e o valor true
  4. A quarta tem o nome Idade e o valor 35;

A seguir temos outro exemplo de representação de um objeto pessoa com um método exibeNome usando a notação literal:


 var pessoa = { id: "001", nome: "Maria", Ativo: true, idade: 35, exibeNome : function()
  {
          return this.nome + " " + this.idade;
   }
 };
  console.log(pessoa.exibeNome());

 

Assim, um método JavaScript é um objeto contendo a definição function() e são armazenados como propriedades do objeto.

Para acessar um método usamos a sintaxe :  nomeObjeto.nomeMétodo()

Para o exemplo, exibeNome() é um método do objeto pessoa, e, exibeNome é definida como uma propriedade.

A propriedade exibeNome será executada (como uma função) quando for invocada com ().

Este exemplo acessa o método exibeNome() de um objeto pessoa:
console.log(pessoa.exibeNome());

Definindo objetos usando o pattern constructor

As classes podem ser definidas usando funções em JavaScript. Este código mostra uma maneira simples de
definir uma classe cliente em JavaScript:


  var cliente = new function(){};
 

Neste código acabamos de definir uma classe vazia com um construtor padrão e sem propriedades e métodos.

A mesma função pode ser definida em um estilo de declaração de função regular:


  function cliente() {};
 

Usando a declaração de função regular, o mecanismo JavaScript sabe buscar a função quando for necessário. Por exemplo, se você chamar a função antes da declaração de função em seu script, ele irá chamar essa função, enquanto a abordagem de definição de variável precisa que a variável seja declarada primeiro antes de chamá-la.

Usando a palavra-chave class

O ECMAScript 6 fornece uma nova maneira de definir classes e introduziu uma palavra-chave class, que pode ser usada como em outras linguagens de programação.


 
class Cliente {
            constructor() { }        
   };
 

Este código é a representação da definição de um objeto cliente. O construtor padrão é o constructor() que não usa parâmetros, e, pode ser substituído com mais parâmetros, dependendo dos requisitos.

Cada classe permite que você defina apenas um construtor, e se o construtor for substituído, o construtor padrão
não será usado para instanciar objetos.

Definindo propriedades usando o pattern constructor

O padrão constructor permite definir parâmetros que restringem a passagem dos valores das propriedades pelos usuários ao instanciar os objetos.

Neste exemplo temos um objeto pessoa com as propriedades,  id,nome, ativo e idade onde as propriedades são atribuídas ao valor 'this' no corpo da função.

A palavra-chave this se refere ao objeto atual e as propriedades podem ser acessadas usando this quando estiver chamando dentro da classe, ou através da variável de instância, como mostrado no código.

Para criar um novo objeto com esta função, você usa o operador new seguido por uma chamada de função.

Uma função invocada dessa maneira é chamada de função construtora cujo propósito principal é criar e inicializar um novo objeto.

Veja outro exemplo exemplo abaixo:

   

Se você não informar a palavra new o seu código vai 'quebrar' sem aviso algum.

Você pode se proteger contra esse erro incluindo uma verificação no início de cada função de construtor verificando  se essa é uma instância da função.( usando instanceof )

Para o nosso exemplo temos o código abaixo que invoca uma nova instância usando a new, retornando uma nova instância verdadeira se não existir uma instãncia da função Livro:

Em outro artigo vamos continuar a tratar de objetos na linguagem JavaScript.

'Ora, o homem natural não compreende as coisas do Espírito de Deus, porque lhe parecem loucura; e não pode entendê-las, porque elas se discernem espiritualmente.'
1 Coríntios 2:14

  • Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

    Quer migrar para o VB .NET ?

    Quer aprender C# ??

    Quer aprender os conceitos da Programação Orientada a objetos ?

    Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

      Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

    Referências:


    José Carlos Macoratti