Czy ten fragment wykrywania pętli for-in generuje niepożądane fałszywe alarmy?

Wszyscy to wiemyna pętle na tablicach sąabsolutnie zła. Mimo to są one często używane, a powodowane przez nie błędy są trudne do śledzenia, zwłaszcza gdy dzieje się to w zależności od przeglądarki, na przykład z powoduindexOf-płaski lub takie.

Więc zakodowałem ten prosty fragment kodu, który dodaje wyliczalny getter dla „error„właściwość naArray.prototype (nie do użycia w kodzie produkcyjnym):

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

Możesz dodać go jako skrypt greasemonkey dla wszystkich domen, a zobaczysz alerty na prawie każdej stronie :-) Większość z nich jest spowodowana przez połączenia zjQuery.extend z wątpliwymi argumentami, btw.

Moje pytanie brzmi teraz:Czy są jakieś sytuacje, które uzasadniają takie „złe” pętlelubcokolwiek innego powodującego fałszywe pozytywne alarmy?

Zastanawiam się, jak wpłynęłoby to na użyteczność mojego kodu.

questionAnswers(1)

yourAnswerToTheQuestion