dizerAlgo é uma função com 2 parâmetros, pelo que você disse não importa o que sejam os parâmetros, pode ser um int, uma string etc etc correto?
Isso mesmo.
O forma que você fez o callback não seria necessário um callback. Você poderia deixar o window.alert
dentro do método dizAlgo
:
var pessoa = {
nome: "João",
idade: 35,
dizerAlgo: function (mensagem) {
window.alert(msg);
}
};
pessoa.dizerAlgo("Olá");
Mas gostei bastante do seu exemplo, bem melhor do que o meu. Pegando a sua ideia você poderia implementar o callback com a seguinte necessidade. Imagine que você quer perguntar o nome para a pessoa
se ela souber responder o nome dela você quer pegar o nome dela e falar pra ela Prazer Fulano (nesse caso João) e se você enviar uma resposta a essa pessoa que ela não sabe responder ela te já te responderia que ela não entendeu.
var pessoa = {
nome: "João",
idade: 35,
responde: function (pergunta, saida) {
if (pergunta == "Nome?") {
saida(this.nome)
} else {
window.alert('Ixi! Não entendi o que você falou. Desculpa aí :-)')
}
}
};
pessoa.responde("Nom?", function(msg){
window.alert('Prazer ' + msg);
});
Nesse caso o callback é bem útil porque você precisa saber o nome da pessoa pra dar uma resposta da forma que você quiser. Utilizar Prazer João mas vamos dizer que você perguntou mais um vez o nome da pessoa e não quer ser mal educado e diz pra ela Desculpa ter perguntado novamente, João. Sou ruim pra guardar nomes:
var pessoa = {
nome: "João",
idade: 35,
responde: function (pergunta, saida) {
if (pergunta == "Nome?") {
saida(this.nome)
} else {
window.alert('Ixi! Não entendi o que você falou. Desculpa aí :-)')
}
}
};
pessoa.responde("Nom?", function(msg){
window.alert('Prazer ' + msg);
});
pessoa.responde("Nom?", function(msg){
window.alert('Desculpa ter perguntado novamente,' + msg + '. Sou ruim pra guardar nomes');
});
Por tanto uns dos melhores momentos pra se usar um callback é quando você precisa pegar um dado de um objeto e com o acesso a esse dado tratar ele da forma que quiser em momentos diferentes.