Prvni bych se zeptal na predchozi kod. Na tom zavisi vse. Viz jeden z prikladu na stackoverflow.
valueOf je nativni prevodni funkce, ktera vraci obsah objektu. Normalne by to vratilo definici objektu, cely text pro classA, ale prepsanim to muze vratit neco jineho. A pak uz jen staci zvysovat pri kazdem volani cislo o 1. V podmince se to pak vola pokazde znovu a znovu.
<script>
function classA() {
this.value = 0;
this.valueOf = function () { return ++this.value; };
}
var a = new classA;
document.write(a == 1 && a == 2 & a == 3);
</script>
Je to podobne jako
<script>
var b = 0;
function a() { return ++b; }
document.write(a() == 1 && a() == 2 & a() == 3);
</script>