Wird dieses For-In-Loop-Erkennungs-Snippet unerwünschte Fehlalarme erzeugen?

Wir alle wissen dasfor-in-loops auf Arrays sindabsolut böse. Trotzdem werden sie häufig verwendet und die verursachten Fehler lassen sich nur schwer nachvollziehen, insbesondere wenn sie beispielsweise aufgrund von Browserabhängigkeit auftretenindexOf-scheiben oder so.

Also habe ich dieses einfache Snippet codiert, das einen zählbaren Getter für ein "error"Eigenschaft aufArray.prototype (nicht zur Verwendung in Produktionscode):

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

Sie können es als greasemonkey-Skript für alle Domains hinzufügen, und auf fast jeder Site werden Warnungen angezeigt :-) Die meisten werden durch Aufrufe von verursachtjQuery.extend mit fragwürdigen Argumenten, übrigens.

Meine Frage ist jetzt:Gibt es Situationen, die solche "falschen" Schleifen legitimieren?, oderVerursacht sonst noch etwas falsch-positive Warnungen?

Ich frage mich, wie sich dies auf die Nützlichkeit meines Codes auswirken würde.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage