foo.component.method(foo, ...) is support for this style of programming. If you really want it to look better you could wrap the methods in a function.
Simple example to illustrate my idea:
function redirect(method)
return function(component, ...) return method(component.object, ...) end
end
-- declare this helper to register component actions
-- one could also just wrap the method directly i.e `redirect(function(object`
function component:action(name)
self[name] = redirect(self[name])
end
function component:something()
-- code here self == the object
end
component:action 'something' --register it as an action on the object the component is attatched to.
-- `foo.component:something()` will now work assuming components are wired up to have that .object reference.
While this example is clearly not complete, I hope it illustrates the suggestion clearly enough. I actually prefer the verbose method though, since a big part of composition based designs is being able to decouple the actions and the data (example is using an ECS) so having that clear reference too foo makes sense to me.