1
resposta

criação de classes no JavaScript

Galera, bom dia!

Eu to com uma dúvida sobre a criação de objetos especificamente no javaScript (nao jquery), pois o conceito da aula e o seguinte, vc cria uma funcao, e esta funcao tem uma variavel que possui os atributos da classe, ficaria uma coisa do tipo:

function getPessoa(){
    var pessoa = {
        nome: "Fulano de tal";
        idade: "29 anos";
    }
    return pessoa;
}

o que eu queria saber e se é possivel criar uma classe sem a necessidade da dependencia de uma funcao, assim no codigo a instancia desse objeto ficaria mais explicita, em vez de se chamar a funcao que retornaria o objeto instanciado, por ex:

    var pessoa = {
        nome: "Fulano de tal";
        idade: "29 anos";
    }
    var setPessoa = new pessoa();

eu estou tentando associar a coisa um pouco com o java, porem nao sei se é necessária essa dependencia e se a linha que instancia o objeto está correta.

1 resposta

E ai Douglas,

Então, em JS, pode-se criar uma notação de objeto igual você fez e simular uma classe, mas com algumas correções, vejamos:

var Pessoa = {
  nome: 'Leandro',
  idade: 25,
  getNome: function() {
    return this.nome
  }
}

Pessoa.nome = 'Pedro'
Pessoa.getNome()

Usa-se a vírgula no fim de cada instrução, ela indica que há mais uma propriedade ou método a ser declarada.

Para fazer um setter ou getter basta digitar: Variavel.propriedade ou Variavel.metodo()

O JS é muito flexível e recomendo por exemplo uma lida neste artigo.

Link: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Inicializador_Objeto

Mas... a partir do ECMAScript 2015 (ES6) é possível sim criar classes de uma forma mais convencional (não é lá essas coisas mas...) ou mais próximo disso.

Exemplo:

class Pessoa {
  constructor(nome) {
    this.nome = nome
    this.idade
  }

  getNome() {
    return this.nome
  }

  setIdade(valor) {
    this.idade = valor
  }

  getIdade() {
    return this.idade
  }
}

var pessoa = new Pessoa('leandro')

pessoa.getNome()
pessoa.setIdade(25)
pessoa.getIdade()

Há muitas outras coisas que se pode estudar sobre o assunto, mas dei esse exemplo para que possa comparar os dois casos.

Artigo de classes em ES6:

Link: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Classes

Ainda há outras formas de se declarar uma classe, mas o mais próximo do convencional é o citado acima.