title: "Friend Classes" in javascript
body: <p>I have a Factory class that creates a Widget object. The Factory object needs to callback a "private method" of the Widget object at a later time to pass it some ajax info. So far, the only implementation I've come up with is to create a public method in the Widget that returns the private method to the factory, and then deletes itself, the Factory then returns the new Widget while retaining a pointer to the private method. Here is a simplified example:</p>
  
  <pre><code>function Factory()
  {
      var widgetCallback = null;
  
      this.ajaxOperation = function()
      {
          //some ajax calls
          widgetCallback('ajaxresults');
      }
  
      this.getNewWidget = function()
      {
          var wid = new Widget();
          widgetCallback = wid.getCallback();
          return wid;
      }
  
      function Widget()
      {
          var state = 'no state';
          var self = this;
          var modifyState = function(newState)
          {
              state = newState;
          }
  
          this.getState = function()
          {
              return state;
          }
  
          this.getCallback = function()
          {
              delete self.getCallback;
              return modifyState;
          }
      }
  }
  </code></pre>
  
  <p>Is there a better way to achieve the effect I'm after or is this a fairly reasonable approach? I know it works, just curious if I'm stepping into any pitfalls I should be aware of.</p>