¿Este fragmento de detección de bucle for-in generará falsos positivos no deseados?

Todos sabemos esopara-en-bucles en matrices sonabsolutamente malvado. Sin embargo, a menudo se usan y los errores causados ​​son complicados de rastrear, especialmente cuando sucede que depende del navegador, por ejemplo, debido aindexOf-suplica o tal.

Por lo tanto, he codificado este fragmento simple que agrega un captador enumerable para un "error"propiedad enArray.prototype (no para uso en código de producción):

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 :-)");
    }
});

Puede agregarlo como una secuencia de comandos de greasemonkey para todos los dominios, y verá alertas en casi todos los sitios :-) La mayoría de ellos están causados ​​por llamadas ajQuery.extend con argumentos cuestionables, por cierto.

Mi pregunta es ahora:¿Existe alguna situación que legitime dichos bucles "incorrectos"?o¿Algo más que cause alertas falsas positivas?

Me pregunto cómo afectaría esto a la utilidad de mi código.

Respuestas a la pregunta(1)

Su respuesta a la pregunta