Esse snippet de detecção de loop for-in gerará falsos positivos indesejados?

Nós todos sabemos issofor-in-loops em matrizes sãoabsolutamente mal. Ainda assim, eles são usados ​​com frequência e os erros causados ​​são complicados de rastrear, especialmente quando ocorrem dependentes do navegador, por exemplo, devido aindexOf-shims ou tal.

Então, eu codifiquei este snippet simples que adiciona um getter enumerável para um "error"propriedade emArray.prototype (não para uso no código de produção):

Object.defineProperty(Array.prototype, "error", {
    enumerable: true,
    get: function() {
        if (this === Array.prototype) // that looks OK
            return undefined;
        if (window.confirm("Somebody who coded the site you're viewing runs through an Array with a for-in-loop.\nShame on him!\n\nDo you want to raise an Error to trace the origin?"))
            throw new SyntaxError("Array traverse with for-in-loop, touching Array.prototype's 'error' property :-)");
    }
});

Você pode adicioná-lo como um script greasemonkey para todos os domínios, e você verá alertas em quase todos os sites :-) A maioria deles é causada por chamadas parajQuery.extend com argumentos questionáveis, btw.

Minha pergunta é agora:Existem situações que legitimam esses loops "errados"?oumais alguma coisa causando alertas falso-positivos?

Eu estou querendo saber como isso afetaria a utilidade do meu código.

questionAnswers(1)

yourAnswerToTheQuestion