Pergunta

No JavaScript, como você poderia criar uma nova função com o mesmo nome que uma função existente, enquanto também preservava a função original para que ela pudesse ser chamada de dentro da nova?

Foi útil?

Solução

Você pode passar a função original em uma função anônima que retorna uma função de substituição que tem acesso à função original.

Por exemplo

parseInt = (function parseInt(original) {
    return function (x) {
        console.log("original would've returned " + original(x));

        // just random 'new' functionality
        return (x | 0) * 2;
    };
}(parseInt));

Exemplo de saída:

>> parseInt(10);
<< original would've returned 10
<< 20

Outras dicas

Você quer implementar embrulho de função, verifique os seguintes artigos:

Você pode simplesmente atribuir a função antiga a uma variável com um nome diferente:

var old_parseInt = parseInt;

function parseInt(s) {
   return old_parseInt(s) + 1;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top