// I can access my private function here.
privateFunction();
jQuery(window).resize(function() {
// But not here :(
privateFunction();
});
Да вы можете. JavaScript статически ограничен. Вы можете получить доступ ко всем переменным и функциям каждой охватывающей области в этом обратном вызове изменения размера, включая privateFunction
(если вы не затеняли его, указав privateFunction
во вложенной области).
Что вы не можете сделать, это получить доступ к любой из этих локальных переменных вне закрывающей функции.
Я пытаюсь определить способ, которым я могу контролировать доступ к методам javascript, который мы используем на работе (часть диска для улучшения стандартов кодирования).
Я бы предположил, что это бессмысленное упражнение.
Пространство имен полезно для предотвращения нежелательных конфликтов имен. Для настоящих «частных» членов строго соблюдаются жесткие границы безопасности. Но это JavaScript: вы не используете код с разными уровнями доступа и песочницей, как на Java. Вам не нужно слепо воспроизводить модель безопасности Java в JavaScript. Кто здесь «нападавший»? Сам? Другие кодеры в вашей команде?
Скрытие и инкапсуляция данных - хорошая практика, но для достижения этой цели вам не нужно строго соблюдать конфиденциальность. Действительно, наличие настоящих рядовых может затруднить задачу отладки и прототипирования. Рассмотрим подход, похожий на Python, где вы просто отмечаете элементы, которые не должны использоваться извне, например, с помощью подчеркивания. Любой, кто использует псевдо-частный член, знает, что он делает то, чего не должен, и, надеюсь, у него есть временная временная причина.
Зачем вы это делаете? –
В каком смысле? Это эксперимент на самом деле. Было бы неплохо иметь более жесткий контроль над javscript, который мы производим. –
Я не знаю, мне кажется контрпродуктивным добавить модификаторы доступа на язык, который обычно их не имеет. Люди рассчитывают на библиотеки JavaScript, чтобы их не было. –