Чтобы создать класс JavaScript с открытым методом, я бы сделал что-то вроде:
function Restaurant() {}
Restaurant.prototype.buy_food = function(){
// something here
}
Restaurant.prototype.use_restroom = function(){
// something here
}
Таким образом, пользователи моего класса могут:
var restaurant = new Restaurant();
restaurant.buy_food();
restaurant.use_restroom();
Как создать частный метод, который может быть вызван методами buy_food
и use_restroom
, но не извне пользователями класса?
Другими словами, я хочу, чтобы моя реализация метода могла:
Restaurant.prototype.use_restroom = function() {
this.private_stuff();
}
Но это не должно работать:
var r = new Restaurant();
r.private_stuff();
Как определить private_stuff
как частный метод, так что оба они имеют значение true?
Я читал Doug Crockford writeup несколько раз, но это не похоже на то, что методы "private" могут быть вызваны публичными методами и "привилегированные" методы могут быть вызваны извне.