В этом случае некоторые библиотеки делают так, чтобы весь доступ осуществлялся с помощью get
и set
методов, а не вызывал что-либо напрямую.
obj.get ("bar") obj.set ("bar", 4);
Затем в вашей реализации этих методов вы можете проверить базовый тип и либо вернуть значение напрямую, либо вызвать его функцию.В методе set, если это функция, вы можете передать массив arguments, чтобы разрешить произвольное количество аргументов в установщике, если это необходимо.
Это также позволяет подклассам переопределять эти методы, если они хотят, поскольку у вас по существу есть сеттерыи добытчики сейчас.Очевидно, что есть некоторые жертвы в их использовании, так как вы отказываетесь от чистоты прямого задания и извлечения свойств.Но вы попросили шаблоны проектирования, так что это один.
Библиотека YUI использует этот метод.
Преимущество этого по сравнению с собственными установщиками и получателями заключается в том, что это будет работать в любой версии браузера (с указанными выше недостатками).