Clojure's protocols are interfaces. And dependency injection is as easy as passing in a map. Thinking in one thing at a time I can understand though. In many languages (JavaScript included) you basically dedicate a file or module to a singular concept, whereas in Clojure that doesn't make much sense.
You have namespaces full of information instead, with the tradeoffs being that you get increased visibility of your code at the cost of not having things silo'd the way other languages do it. I've heard it referred to as "programming through a pane of glass". (the decreased visibility you get in other languages) I prefer to see more, but I can totally understand people who like the encapsulation.