Waster schreef op zaterdag 24 november 2012 @ 13:15:
Het is inderdaad die var die je vergeten bent, waardoor er maar één self hebt die je in de global namespace gooit, waarvan je steeds de title aanpast.
Ik probeer zelf zo min mogelijk new te gebruiken in javascript. In dit voorbeeld voegt je methode toch weinig toe en kun je gewoon een data object met alleen {title: idx} maken die je array gooit. Ik werk altijd veel met singletons zodat ik geen new hoef te gebruiken

In dit voorbeeld voegt het idd niet zoveel toe, maar ik heb mijn app zo opgezet dat ie de manier om klasses te gebruiken binnen JS hanteert, met allemaal functies er in die leuke dingen doen met Knockout. Heb het zo geleerd van hun tutorials, en ik vind het wel prettig werken

Tja, waarom ookweer? Ik heb het ooit geleerd van mijn docent C++, die kerel was zo ontzettend slim (Frank Brokken, weet niet of die naam jullie iets zegt) en hij vond het cool om dat zo te doen. Had er ook een reden voor, maar die ben ik eigenlijk alweer vergeten

. Het klonk redelijk, dus sindsdien was dat mijn de facto manier voor for-loops, en het is nog nooit mis gegaan. Als ik de behoefte krijg om het weer eens uit te zoeken kan dat altijd nog eens.
cfern schreef op zaterdag 24 november 2012 @ 13:19:
[...]
Het is trouwens nog best lastig uit te leggen waarom dit nu fout gaat. Ik vermoed dat de self in de printTitle-functie altijd naar een globale self verwijst die voor het laatst is aangepast bij het maken van het tiende object.
Dit valt inderdaad wel onder de noemer 'eens en wss nooit weer'. Je uitleg klinkt wel logisch, al twijfel ik hoe het komt dat self opeens een globale variabele is geworden, als ik hem verder alleen binnen een closure declareer (in Category). Zou de browser niet gewoon een error moeten geven dat 'self' niet globaal gedefinieerd is?
EDIT: Ah, ben er al achter

. 'self' verwijst in een blanko tabblad in Chrome gewoon naar Window, dus dat is het hele eieren eten. Misschien maar een variabele 'zelf' aanmaken
[
Voor 3% gewijzigd door
Struikrover op 24-11-2012 13:49
]