I first encountered the idea of object-orientation in college, and while I understood the mechanics well enough — the "how", if you will — I didn't quite get the "why". It seemed like just another way of representing data and actions, and a fairly cumbersome one at that. It certainly didn't inspire me to stop writing procedural code at the time.
Some time later, however, I found myself reading through the language documentation of an interpreted language I was considering taking up (I've forgotten which) and while scanning through the examples, found what seemed the single most transcendent notion I'd ever encountered. The example was something akin to the following:
" foo ".trim();
In all my courses, I had never seen an object method called on a literal. It astounded me! For whatever reason, the idea of objects suddenly made sense. Classes as a way of structuring data had seemed clear enough before, but until that moment, the idea that objects could be so deeply embedded in the design of a language that actual string literals were objects with class methods had never occurred to me.
I've always felt a great debt to whatever anonymous programmer decided to add that particular example. Not only did it greatly expand my concept of how code is written, but I don't think I would have survived learning JavaScript without it!