To make a JavaScript class with a public method I’d do something like:
function Restaurant() {} Restaurant.prototype.buy_food = function(){ // something here } Restaurant.prototype.use_restroom = function(){ // something here }
That way users of my class can:
var restaurant = new Restaurant(); restaurant.buy_food(); restaurant.use_restroom();
How do I create a private method that can be called by the buy_food and use_restroom methods but not externally by users of the class?
In other words, I want my method implementation to be able to do:
Restaurant.prototype.use_restroom = function() { this.private_stuff(); }
But this shouldn’t work:
var r = new Restaurant(); r.private_stuff();
How do I define private_stuff as a private method so both of these hold true?
I’ve read Doug Crockford’s writeup a few times but it doesn’t seem like ‘private’ methods can be called by public methods and ‘privileged’ methods can be called externally.
You can do it, but the downside is that it can’t be part of the prototype: