Skip to content

Instantly share code, notes, and snippets.

@rssilva
Created January 21, 2013 23:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rssilva/4590357 to your computer and use it in GitHub Desktop.
Save rssilva/4590357 to your computer and use it in GitHub Desktop.
My first post about Javascript on dailydevtips.com
//imaginemos um objeto Carro, que recebe nome, marca, chassi e acao
//como argumentos o quarto parametro é uma função
var Carro = function (nome, marca, chassi, acao) {
this.nome = nome; //o nome do carro é setado
this.marca = marca; //a marca do carro é setada
//numeroChassi é uma variável privada que recebe o chassi
//passado como argumento
//mensagem é uma variável privada que recebe uma string vazia
var numeroChassi = chassi,
mensagem = ''
//veja bem, aqui checamos se acao existe, ou seja, se foi passada com argumento
//se eu criar um carro com três argumentos, acao será igual a undefined
//e a execução não entrará no if
if (acao && typeof(acao) === 'function') {
//se acao foi passada como argumento e é do tipo função
//typeof() retorna o tipo da variável, muito útil! Não se esqueça
//mensagem recebe o que é retornado de acao, sendo que acao
//recebeu como argumento numeroChassi
//Isso parece bem complicado no início, olhe com calma
mensagem = acao(numeroChassi);
console.log(mensagem); //aqui imprimimos no console o valor de mensagem
}
}
var funcaoCallback1 = function (data) {
return 'Esse chassi tem o número '+ data;
}
var funcaoCallback2 = function (data) {
return 'Esse chassi tem o número '+ data/230;
}
var carro1 = new Carro ('DeLorean', 'DMC', '16041092836', funcaoCallback1);
//ao instanciar esse objeto, temos o seguinte no console 'Esse chassi tem o número 16041092836'
console.log(carro1); //Object { nome="DeLorean", marca="DMC"}
var carro2 = new Carro ('DeLorean', 'DMC', '16041092836', funcaoCallback2);
//ao instanciar esse objeto, temos o seguinte no console 'Esse chassi tem o número 69743881.89565217'
console.log(carro2);//Object { nome="DeLorean", marca="DMC"}
////////////////////////////////////////////////////////////
//É muito comum, em vez de passar uma função como fizemos, usar a seguinte sintaxe
var carro3 = new Carro ('DeLorean', 'DMC', '16041092836', function (data) {
return 'Esse chassi tem o número '+ data;
});
//pode ser muito confuso para quem está começando, mas nada tem de diferente
//em relação ao que fizemos no caso do carro1. Essa sintaxe é utilizada
//porque não precisamos armazenar a função numa variável, nesse caso funcaoCallback1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment