Если я правильно понимаю, согласно Douglas Crockford http://javascript.crockford.com/private.html, "привилегированные" методы похожи на то, что мы знаем как "общедоступные" методы. и "общедоступные" методы - это нечто иное.
Вот как я это понимаю:
-
"Привилегированные" методы могут обращаться к закрытым переменным, поскольку они определены внутри закрытия, когда были определены остальные частные переменные.
var C = function(){ var private; this.privilegedMethod = function(){ /* blah blah */ }; } var cObj = new C();
-
"Публичные" методы - это те, которые добавляются к объекту вне самого объекта через прототип.
var C = function(){ /* blah blah */ } C.prototype.publicMethod = function(){ /* blah blah */ }; var cObj = new C();
Я нахожу эти определения "привилегированных" и "общественных" очень запутанными. Я считаю, что "привилегированный" метод - это не что иное, как публичный метод, который мы знаем из объектно-ориентированного программирования. И я думаю, что "общедоступный" метод - это тот, который следует назвать чем-то другим. Если вы думаете об этом, это странный тип функции, он является членом объекта, но не может получить доступ к каким-либо другим частным переменным, что означает, что он не способствует инкапсуляции. Это почти как независимый вспомогательный метод для объекта.
Итак, мне было интересно, почему Дуглас Крокфорд придумал эти запутанные термины? И почему сообщество javascript приняло эту терминологию? Или, если я ошибаюсь в чем-то, пожалуйста, поправьте меня.