Created
February 20, 2013 03:00
-
-
Save rssilva/4992444 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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