Наличие нескольких методов, которые являются внешними по отношению к классу, и вверх по цепочке контекста, в отличие от класса, как методы 'namespaced', не может быть лучше, imo.
Не нравится шаблон № 2 по нескольким причинам:
- управляемость - сделать привязку ссылки на каждую внешнюю функцию в классе будет сложно.
- удобочитаемость - необходимость указать, какая функция используется каким классом будет задачей
- расширяемость - поскольку функции находятся за пределами прототипа класса jso, классы, которые расширяют jso или используют его как миксин, не смогут получить доступ к внешним методам.
При этом с точки зрения памяти - просто проведите тест, но я бы сказал, что шаблон 1, вероятно, будет иметь меньшие накладные расходы, поскольку он определен один раз в прототипе, а не в каждом отдельном случае.