2013-09-01 4 views
3

Я хотел структурировать яваскрипт приложения с модульным рисунком, как таковые:«Частное» свойство наследование в 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 { 

    }())) 

То, что я пытаюсь достичь либо один из следующих действий:

  1. При вызове APP.publicMethod() после его продления, я хочу вернуться 'childPrivate' и не 'private';
  2. Доступ к _priv из расширенного подвергается действию API.

Таким образом, я хотел бы, чтобы частные переменные, определенные в родительском модуле, наследовались в дочернем модуле как частные члены дочернего элемента.

+0

С этой структурой вы не можете этого сделать. 'var' объявляет переменные в локальной области, поэтому они не будут доступны снаружи. Вы можете сделать эти переменные общедоступными, но придерживаться частного соглашения об именах с '_', как вы это делаете. – elclanrs

+0

Возможно, я мог бы принять другой подход/структуру? Я действительно хотел бы наслаждаться конфиденциальностью этих участников, не добавило бы ли это просто префикс '_', полностью ли уничтоживший цель частных переменных? – Sunyatasattva

+0

В JavaScript нет видимости, все контролируется закрытием. Обычно общие переменные имеют знак подчеркивания, указывающий, что они являются частными. Вы можете попробовать пропустить аргументы. – elclanrs

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^