arrow_back Voltar ao curso

classe / spawna / esse-cara / novo

Fundamentos do XanaScript • Aula 15 de 20

Classes são plantas de objetos: definem os dados (atributos) e o comportamento (métodos) que cada instância terá. O XanaScript usa classe, spawna (construtor), esse-cara (this) e novo (instancia).

js
classe Animal {
  spawna(nome) {
    esse-cara.nome = nome
  }
  metodo falar() {
    volta "Au au " + esse-cara.nome
  }
}

cria a = novo Animal("Bidu")
grita-ae(a.nome)        // Bidu
grita-ae(a.falar())     // Au au Bidu

O que cada keyword faz?

Keyword Função
classe declara a classe (o molde)
spawna construtor: roda ao criar instância, monta o objeto
esse-cara "this": refere-se à instância atual
novo cria uma instância nova a partir da classe
metodo função que pertence à classe

Por que classes existem?

Você já viu objetos ({ nome: "Ana", idade: 25 }). Classes levam isso além: garantem que toda instância tenha a mesma forma e juntam dados E comportamento num só lugar.

Sem classe, você teria que escrever a função falar pra cada animal separadamente:

js
// Com classe: o comportamento vem junto
cria a = novo Animal("Bidu")
a.falar()

// Sem classe: você precisaria recriar a lógica pra cada objeto

O que o spawna faz?

spawna é o primeiro método que roda. Ele inicializa o objeto. O novo chama o spawna automaticamente:

js
cria a = novo Animal("Bidu")
// 1. cria um objeto vazio da classe Animal
// 2. chama spawna("Bidu")
// 3. esse-cara.nome = "Bidu" grava o nome na instância

Por que esse-cara (this)?

Quando você tem duas instâncias, os métodos são os MESMOS — mas esse-cara diz "use os dados desta instância":

js
cria a = novo Animal("Bidu")
cria b = novo Animal("Rex")
grita-ae(a.falar())  // Au au Bidu  (esse-cara = a)
grita-ae(b.falar())  // Au au Rex   (esse-cara = b)

O esse-cara é a ligação entre o código genérico do método e os dados específicos da instância.

Comentários