ExpertiDict

JavaScript · Intermediário · Inglês · Informal

monkey patching

/ˈmʌŋki ˈpætʃɪŋ/substantivo

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

Veja também

Todos os termos de JavaScript