Запросы на сервере (согласно заветам REST) должны выполняться по возможности как можно быстрее, отдавая результат клиенту сразу. Если таки предполагается какая-то долгая обработка информации на сервере, то предлагается завести отдельный ресурс (в терминах REST, например, в коллекции /tasks) и в качестве ответа сразу вернуть клиенту идентификатор созданной задачи для дальнейшего управления ей (просмотра её статуса, управления приоритетами, остановки и т.п.) Тогда получается такая схема с отменой запросов: все запросы, отменённые на клиенте, мы никак дополнительно не сопровождаем на сервере, но при этом на клиенте отмену делаем только для запросов, не меняющих состояние сервера (не создающих/меняющих ресурсы, а только возвращающих информацию об их текущем состоянии). Чаще даже вообще не делают отмену таких запросов (чаще всего это "экономия на спичках" даже для самых посещаемых сайтов и приложений). Но если отменяется некая "тяжёлая" задача, "упакованная" в отдельный ресурс (/tasks/123 в нашем случае), то отдельно посылаем запрос на удаление этой задачи (и вот эти запросы уже нельзя отменять, их нужно обработать до конца, чтобы не рассинхронизировать состояние клиента и сервера).
Как до недавнего времени (ES5) ООП "делали руками", через прототипы, так и перегрузку операторов программисту в JS ничего не мешает реализовать руками (и её очень часто реализовывают, в стиле `return arg instanceof MyClass ? arg.getPercents() : arg * 100`).
leni_m: ну вот теперь уже можно начать формулировать конкретные вопросы типа "как мне задать в CSS размер элемента относительно размера экрана/бумаги", например.
leni_m: лучше таки определиться, что в итоге-то хочется, чтобы можно было обсуждать, что не получается. Хочется фиксированный размер блоков? Хочется фиксированный размер шрифтов? Хочется растягивать равномерно на страницу? Или чо?