правый. Я думаю, я понимаю, что вы пытаетесь сделать, но ...
__defineGetter__
и __defineSetter__
устарели и не пересекаются с браузером: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/DefineSetter
Защита и проксирование прямого доступа к этим свойствам не будут работать, когда вы расширяете объект, потому что установщик / получатель - обращаясь к свойствам нового объекта - не перейдет к родительскому объекту (объекту-прототипу), где вы слушаете.
Вы можете попробовать посмотреть на Extends
параметр. когда вы устанавливаете новый класс, ищите функции, присутствующие на всем пути вверх по цепочке прототипов от нового объекта params, и если совпадение найдено, вы должны также применить установщик / получатель к новому объекту. это не так просто ...
Я бы сказал, вероятно, после: newClass.prototype.parent = parent;
Вы сможете проверить, стали ли доступны геттеры / сеттеры, и присоединить своих слушателей. вы, вероятно, хотите как-то сохранить ссылку, если не хотите проверять все свойства класса на этом этапе.
в качестве альтернативы, вы можете реорганизовать мутатор класса инициализации без перехода к созданию типа и добавить туда свои вещи - хотя оригинальный объект может быть недоступен.