Search code examples
javascriptextjsprivateextendprivate-members

Private members when extending a class using ExtJS


I have done some research on the ExtJS forum regarding private methods and fields inside a extended class, and I couldn't find any real answer to this.

And when I say an extended class I mean something like this:

Ext.ux.MyExtendedClass = Ext.extend(Ext.util.Observable, {
    publicVar1: 'Variable visible from outside this class',
    constructor: function(config) { this.addEvents("fired"); this.listeners = config.listeners; }, // to show that I need to use the base class
    publicMethod1: function() { return 'Method which can be called form everywhere'; },
    publicMethod2: function() { return this.publicMethod1() + ' and ' + this.publicVar1; } // to show how to access the members from inside another member
});

The problem here is that everything is public. So, how do I add a new variable o method within the scope of MyExtendedClass that cannot be accessed from outside but can be access by the public methods?


Solution

  • I use something like the following.

      var toolbarClass = Ext.extend( Ext.Container,
      {
        /**
         * constructor (public)
         */
        constructor: function( config )
        {
          config = config || {};
    
          // PRIVATE MEMBER DATA ========================================
          var accountId = Ext.id( null, 'ls-accountDiv-');
    
          // PUBLIC METHODS ========================================
          this.somePublicMethod = function(){
             console.log( accountId );
          };
    
    ...