Yes, that is the Javascript way. In truth, there are no "classes" in javascript. Every object is unique. It's like a dictionary (in other languages) which allows you to create unlimited key/value pairs.
There is however the prototype mechanism which allows for one object to be a "prototype" for another object. In this case, if a property is not found on the original object, then the prototype is searched for that property (and the prototype's prototype, etc.) But both objects are still individual and unique. This is nothing like the "class" mechanism found in C++ derived languages (like Java or C#), and attempting to emulate that will bring you many headaches.
Also yes, there is also nothing like the private/public/protected members. Your approach is correct - you can get hidden data by using closures. This enables something similar to "private" and "public". Unfortunately there is nothing to emulate the "protected" level (accessible only by this object and those for whom it is a prototype).
This brings to memory an interesting video about Javascript performance. The guys there had found out that (at least in the case of web browsers) the sheer amount of Javascript code can pretty quickly become a performance limiting factor. So it's often better to just make most of your variables public than to go with the OOP mantra of "private member - public accesors". It's less code and thus faster.