JavaScript · Intermediário · Inglês · Informal
monkey patching
Alterar em tempo de execução um objeto, protótipo ou função existente, trocando ou acrescentando comportamento sem mexer no código original. Em JavaScript é possível porque quase tudo é mutável.
Onde usar
Aparece em testes que trocam uma função por um stub e em polyfills antigos. Em code review, mexer em protótipos nativos, como Array.prototype, é desencorajado: pode colidir com bibliotecas e com versões futuras da linguagem.
Em código
const original = Math.random;
Math.random = () => 0.5; // monkey patch
console.log(Math.random()); // 0.5
Math.random = original;Exemplos
In the tests I monkey patched Math.random to make it predictable.
Nos testes, fiz monkey patching do Math.random para ficar previsível.
Monkey patching Array.prototype can break other libraries.
Fazer monkey patching no Array.prototype pode quebrar outras bibliotecas.
Cuidado
Estender protótipos nativos em código de biblioteca, causando conflitos difíceis de achar.
Sinônimos
patch em tempo de execução