Я хотел структурировать яваскрипт приложения с модульным рисунком, как таковые:«Частное» свойство наследование в JavaScript,
APP = (function() {
// Private stuff
var _privateVariable = 'private',
_priv = 'priv'
_privateMethod = function(){ /* */ };
// Exposed API
return {
publicVariable : 'public',
publicMethod : function(){
return _privateVariable
};
}());
Тогда я хочу, чтобы иметь возможность расширить приложение через плагин типа модули; например, с помощью JQuery:
$.extend(true, APP, (function() {
// Child private stuff
var _privateVariable = 'childPrivate',
// Exposed API
return {
}()))
То, что я пытаюсь достичь либо один из следующих действий:
- При вызове
APP.publicMethod()
после его продления, я хочу вернуться'childPrivate'
и не'private'
; - Доступ к
_priv
из расширенного подвергается действию API.
Таким образом, я хотел бы, чтобы частные переменные, определенные в родительском модуле, наследовались в дочернем модуле как частные члены дочернего элемента.
С этой структурой вы не можете этого сделать. 'var' объявляет переменные в локальной области, поэтому они не будут доступны снаружи. Вы можете сделать эти переменные общедоступными, но придерживаться частного соглашения об именах с '_', как вы это делаете. – elclanrs
Возможно, я мог бы принять другой подход/структуру? Я действительно хотел бы наслаждаться конфиденциальностью этих участников, не добавило бы ли это просто префикс '_', полностью ли уничтоживший цель частных переменных? – Sunyatasattva
В JavaScript нет видимости, все контролируется закрытием. Обычно общие переменные имеют знак подчеркивания, указывающий, что они являются частными. Вы можете попробовать пропустить аргументы. – elclanrs