Created
January 21, 2013 23:05
-
-
Save rssilva/4590357 to your computer and use it in GitHub Desktop.
My first post about Javascript on dailydevtips.com
This file contains 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
//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