Sadly the answer is No. See Python's __getattr__ in Javascript
You've got __defineGetter__, but as you noted you need to know the name of the attribute you will be accessing.
By the way I think you meant __getattr__ (__getitem__ is for things you want to access with []).