JavaScript duvida

5 respostas
javascript
natanIohan

estou aprendendo JavaScript e no código está assim

chao = {
y: 550,
altura: 50,
cor:"#ffdf70",

desenha: function(){
  	ctx.fillStyle = this.cor;
  	ctx.fillRect(0, this.y, LARGURA, this.altura);
  }

isso seria uma classe em java script ? se não oque ?

5 Respostas

wldomiciano

Não é uma classe.

Uma classe, em linguagens class-based, representa um modelo através do qual é possível criar objetos semelhantes (instancias daquela classe).

Seu código mostra apenas uma das formas de se criar um objeto em Javascript, a forma literal. Veja mais aqui:

Diferente de uma classe, no seu exemplo, chao é um objeto, uma instancia única.

Para saber mais sobre classes em JS, veja:

natanIohan

mas nos exemplos em que olhei tem a palavra “var”, e nesse meu código não, e quando fui colocar a palavra var o código não funcionou.

wldomiciano

A palavra var nada tem a ver com classes ou objetos. Ela serve apenas para declarar variáveis explicitamente.

Este link pode ajudar: http://blog.alura.com.br/entenda-diferenca-entre-var-let-e-const-no-javascript/

MayconDouglas

Olá, essa estrutura de dados na verdade é um JSON, que aparentemente ta sendo usado como uma classe. É um modo que acho feio de implementar classes mas também funciona, prefiro usando function, se vc for olhar o código de uma classe gerado pelo compilador do typescript, verá que ele implementa usando function.

discussão interessante

wldomiciano

Não podemos confundir.

O exemplo mostrado é a forma literal de se criar um objeto em Javascript (um objeto, não uma classe).

Criar um objeto a partir de uma função construtora (como vc mencionou) é uma outra forma válida.

A diferença entre usar a forma literal e usar uma função construtora é que a forma literal cria um objeto único que não pode gerar instancias. Já a função age como uma espécie de classe permitindo criar várias instancias dela.

JSON, por outro lado, é um formato de arquivo de texto que é baseado num subconjunto do Javascript (daí o nome).

Criado 13 de fevereiro de 2018
Ultima resposta 14 de fev. de 2018
Respostas 5
Participantes 3