Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''função anônima''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento Web
    • Desenvolvimento frontend
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets e outros ambientes
    • Desenvolvimento com Wordpress
    • Desenvolvimento de apps
    • Desenvolvimento ágil
    • Desenvolvimento de Games
    • Banco de Dados
    • Design e UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • Boteco iMasters

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 1 registro

  1. Omar~

    Indentificar função anônima

    Boas?! Então, venho aqui a pedir ideias sobre como identificar uma função anônima atribuída quando uma segunda função a declara. Basicamente tenho 2 funções: uma é chamada para adicionar o tipo de ação e qual função executar com o evento acionado. outra obtem o tipo e a função para remover o evento no elemento. on: function () { var $type = arguments[0], $listener = arguments[1]; if (!$_.isDefined(this[0].eventListener)) { this[0].eventListener = []; } this[0].eventListener.push({ type: $type, listener: $listener }); this[0].addEventListener($type, $listener, false); }, off: function () { var $type = arguments[0], $listener = arguments[1], $i = 0, $eventData = null; if ($_.isDefined(this[0].eventListener)) { for (; $i < this[0].eventListener.length; $i++) { $eventData = this[0].eventListener[$i]; if ($type == $eventData.type && $listener == $eventData.listener) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } else if ($type == $eventData.type) { this[0].removeEventListener($eventData.type, $eventData.listener, false); } } } } Perceba que para registrar e mais tarde saber qual função foi atribuída ao evento para remover eu armazenei os valores em um array. E para remover apenas identifico se o argumento bate com os dados em algum índice do array. Até então tudo bem..... function adicionar() { elemento.on('click', minhaFuncao); } function remover() { elemento.off('click', minhaFuncao); } O probema está em funções anônimas quando declaradas dentro de outra função como isso: function adicionar() { elemento.on('click', function () { // o que fazer.... }); } Então até dar para identificar qual função a declarou, porém não dar para remover com removeEventListener pois essa função não é a ouvinte do elemento. Obs.: Até poderia apagar a função ou "desaturbir sobre o alvo", no entanto não é viável pois pode haver que mais tarde ou outras condições dependam da função. Até cheguei a solucionar "como quebra-galho": Ao invés de atribuir a função recebida pelo argumento em "on" eu atribuo uma outra função pré definida, e essa função checa do array, se houver um índice onde o objeto é o mesmo tipo de evento e a função requisitada também existe no array, essa pré definida executa a função original. Porém não é uma função real, e mais tarde se a pessoa quiser disparar a função digamos um click não pode a chamar seus atributos diretamente (porque seus atrinbutos não são dela e sim da pré definda), terá que chamar a função pré definida, pois é ela realmente a ouvinte. Tornando alvo inviável para quem tem baixo ou menos intimidade com o javascript Por fim até onde eu sei no javascript não há como manipular funções anônimas, por isso o que eu estou tentando fazer é inventar uma solução para algo que não existe. Nota: Nesse caso funciona pois não há uma outra função intermediária, mesmo que seja algo sem sentido de de fazer exemplo.on('click', function (e) { // o que fazer.... }); exemplo.off('click', function (e) { // o que fazer.... });
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.