title: Why do plugins often avoid proper privatisation of functions?
body: <p>Often I see in plugins the use of an underscore to signify a function is private, yet still allow public access (see below for an example). But why? We can either use .call, .apply or .bind for controlling the "this" keyword, or alternatively use the "self" pattern which according to this question is 60% quicker: <a href="https://stackoverflow.com/questions/18895305/will-function-prototype-bind-always-be-slow">Will Function.prototype.bind() always be slow?</a></p>
  
  <p>Is it lazy programming or am I missing something? </p>
  
  <p>Private function exposed example:</p>
  
  <pre><code>var simplifiedPlugin = function() {
      this.name = 'simples';
      this._privateFunc = function() {
          console.log('Why am I here?');
      }
      this.publicFunc = function() {
           // stuff, then
           this._privateFunc();
      }
  }
  var pluginInstance = new simplifiedPlugin();
  </code></pre>
  
  <p>Using the self pattern:</p>
  
  <pre><code>var selfSimplifiedPlugin = function() {
      var self = this;
  
      this.name = 'self is also simples';
  
      function _privateFunc() {
          console.log('Nobody knows am I here');
          //I can use self instead of this
      }
  
      this.publicFunc = function() {
           // stuff, then
           _privateFunc();
      }
  }
  
  var anotherInstance = new selfSimplifiedPlugin();
  </code></pre>
  
  <p>So, my point is with the self pattern, the private function can still use the this context, you just have to use self.fn() instead of this.fn()</p>