Skip to content

Instantly share code, notes, and snippets.

@rssilva
Created February 20, 2013 03:00
Show Gist options
  • Save rssilva/4992444 to your computer and use it in GitHub Desktop.
Save rssilva/4992444 to your computer and use it in GitHub Desktop.
//Vamos criar um objeto 'Humanoide' que extende o objeto 'Model'
//'initialize' é o construtor e 'defaults' é um OBJETO, não um método
//veja a diferença de declaração. Não tem 'function'!
var Humanoide = Backbone.Model.extend({
initialize: function(nome, nascimento){
//o método de Humanoide tem um construtor que recebe
//dois parâmetros 'nome' e 'nascimento'
//colocamos esse console.log para vermos os parâmetros passados
console.log('initialize', nome, nascimento);
//aqui estamos setando o atributo 'nome' e 'nascimento'
//veja a diferença, costumávamos usar this.nome = nome ou
//criar um método para fazer algo parecido
this.set('nome',nome);
this.set('nascimento', nascimento);
//chamamos o método 'saudacao'
this.saudacao();
},
saudacao: function () {
//o método 'saudacao' nos mostra qual o valor do atributo
//this.nome no console e imprime a string de saudacao usando
//this.get('nome')
//como você pode ver this.nome é 'undefined' porque quando
//usamos 'this.set' o atributo é salva num outro objeto
console.log(this.nome);
//Aqui imprimimos a saudação no console
console.log('Olá, me chamo ' + this.get('nome') + '!');
},
//defaults armazena valores default para alguns atributos,
//nesse caso, 'nome' e 'nascimento'
defaults: {
nome: 'indefinido',
nascimento: '1/1/2013',
}
});
//Aqui instanciamos um Humanoide e, ao instanciá-lo, temos
//isso no console:
//initialize Carlos 2/10/1986
//undefined
//Olá, me chamo Carlos!
var carlos = new Humanoide('Carlos', '2/10/1986');
//Aqui vamos criar um objeto 'Elfo' que extende
//Humanoide, veja que estamos sobrescrevendo o construtor
//e 'defaults'
var Elfo = Humanoide.extend({
initialize: function (nome) {
//o construtor recebe somente o parâmetro 'nome'
//e não 'nascimento', visto que os elfos são eternos
//eles meio que só pensam na ERA em que nasceram
//tornando o dia meio sem sentido
console.log('eis um elfo', nome);
this.set('nome',nome);
},
defaults: {
nome: 'indefinido'
}
});
//Veja que não temos mais o método saudacao sendo chamado
//no construtor, mas ele ainda existe porque foi herdado
//de Humanoide
//Aqui instanciamos dois elfos e o seguinte aparece no console:
//eu sou um elfo Legolas
//eu sou um elfo Elrond
var legolas = new Elfo('Legolas');
var elrond = new Elfo('Elrond');
console.log(carlos);
console.log(legolas);
console.log(elrond);
//veremos no console como estão estruturados os três objetos
//Preste atenção no seguinte: os atributos estão em 'attributes'
//e o nosso método 'saudacao' está no 'prototype' do objeto
//Essa linha imprimirá no console
//undefined
//Olá, me chamo Legolas!
legolas.saudacao();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment