Нет, к сожалению, нет.Вы могли бы легко реализовать его, если бы я собирался его реализовать, я бы расширил прокси-объект . Это даст вам немножко гибкости.
ОБНОВЛЕНИЕ:
Это обновление разъясняет вопрос в комментарии ОП.Комментарий был «Это будет новый класс, расширяющий Прокси, а не Словарь / и т. Д.»
Да, вы хотите расширить Прокси, причина этого в том, что он позволяет вам переопределитьнесколько магических методов для достижения вашей цели.Особенно в вашем случае вы можете переопределить setProperty(name:*, value:*):void
.Этот метод будет вызываться каждый раз, когда в вашем классе устанавливается свойство (вы должны предоставить реализацию набора), чтобы вы могли подсчитать количество значений, установленных в данный момент времени.Если вы расширяете объект или словарь, у вас нет доступа к нему, и вы знаете способ узнать, когда устанавливается новое свойство.
Если вы расширили объект вместо этого, вам нужно будет полагаться на интерфейс длядостичь своей цели, требуя, чтобы пользователь устанавливал свойства с помощью вызовов методов.
Реализация Proxy позволит вам по-прежнему устанавливать свойства следующим образом:
myObj.foo = 'bar';
myObj["foo"] = 'bar';
Реализация метода (расширение объекта) будет выглядеть такэто:
myObject.setVal("name", "val");