__defineGetter__ is non-standard, use Object.defineProperty