object.component.method(object) => object:component.method()
^ I also tried this syntax (and was sad it didn't work), but it's not so bad. That strategy makes for cross-cutting communication between components, which is not the greatest thing. It also assumes that call your parents, but not your grandparents! Here's my alternative, a "parent" variable:
Within calls, replace:
object.component.method(object) => object.component:method()
And within component methods:
self => self.parent
self.<<name of this component>> => self
Then, just add a parent member to constructors.
This also makes it easier to do the better thing; preferring self.x over self.parent.x, which avoids conflict and does some "light" encapsulation. If you do cross-cutting communication within the parent, rather than between components, that's also better, and you might not even need a parent variable at all.
Let me know if that's helpful.