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 }; |
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Bem-Vindo Node.js : desenvolvendo para ... - Macoratti
Visual Studio - Iniciando com Node.js - Macoratti
Angular 2 - Cadastro de Clientes - IV - Macoratti
React - Uma introdução bem básica - II - Macoratti
JavaScript - Arrays - Macoratti
ASP.NET - JavaScript - Macoratti
ASP .NET - Validação com JavaScript - Macoratti
JavaScript - Entendendo JavaScript Objects - Macoratti