Я думаю, что для такого поведения есть очень веский вариант использования.
Рассмотрите возможность реализации шаблона состояния с использованием объектов javascript. Вы можете просто сделать это, поддерживая переменные-члены в текущем объекте и все функции, зависящие от состояния, в прототипе. Просто продолжайте изменять прототип, чтобы перейти в другое состояние.
Теперь, когда вы хотите объединить шаблон состояния с шаблоном метода шаблона , вы можете просто вызвать функции состояния как super () (например, как в python). Это важно, потому что функции состояния могут быть хуками или абстрактными функциями в классе метода шаблона. Если они являются первыми, то вы сможете вызывать версии этих методов для суперкласса, независимо от того, какой суперкласс является текущим суперклассом.