Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

return {nextFrame: nextFrame};

    return {
        nextFrame: nextFrame
    };

Isso está retornando um objeto que tem uma função(nextFrame)? Sem isso, não teria como chamar a função nextFrame no gallows.html? Caso tenha como chamar, como teria de ser feito?

Obrigado.

5 respostas

Oi Thiago, tudo bem? Para a primeira pergunta a resposta me parece um sim. Para a segunda, eu preciso de mais informações (cola os códigos completos relacionados a dúvida aqui pra gente ver direitinho por favor).

Tenta sempre deixar a dúvida bem clara aqui tá bem? Inclusive adicionando os códigos referentes a ela, assim a gente centraliza tudo aqui e te ajuda mais rapidamente.

solução!

Quando você faz

return {
        nextFrame: nextFrame
    };

Esta retornando um objeto que possui a propriedade nexFrame. Mas qual é o valor dessa propriedade? A função nextFrame. É através desse objeto retornado que você tem acesso à função nextFrame que esta encapsulada. Não há outra maneira de você acessar a função sem que seja dessa forma.

Veja um exemplo:

function teste() {

    function grita() {
            alert('oi');
       }

     return { x: grita };
}

var objeto = teste();
objeto.x(); // exibe oi
grita(); // undefined

Neste exemplo, você retornou um objeto com a propriedade x que guarda uma referência para a função grita. Então, quando chamar x, estará chamando grita. Mas você não pode chamar grita() diretamente, pois ela esta encapsulada pelo escopo da função teste.

Agora, no lugar de ficar criando propriedades com novos nomes, usamos o mesmo da função que desejamos exportar:

function teste() {

    function grita() {
            alert('oi');
       }

     return { grita: grita };
}

var objeto = teste();
objeto.grita(); // exibe oi
grita(); // undefined

Sucesso e bom estudo meu aluno!

Wanderson, obrigado pela dica, na proxima serei mais preciso em minhas duvidas.

Flávio, perfeita sua explicação, so me tira uma dúvida: é uma boa prática manter o nome da propriedade de forma igual com o nome da função referenciada?

Oi Thiago!

Sim é, porque sua intenção é deixar acessível a função e nada mais justo do que usar o mesmo nome.

Obrigado, Flávio.