title: Strict Violation using this keyword and revealing module pattern
body: <p>Having trouble getting the following to pass jslint/jshint</p>
  
  <pre><code>/*jshint strict: true */
  var myModule = (function() {
      "use strict";
  
      var privVar = true,
          pubVar = false;
  
      function privFn() {
          return this.test; // -&gt; Strict violation.
      }
  
      function pubFn() {
          this.test = 'public'; // -&gt; Strict violation.
          privFn.call(this); // -&gt; Strict violation.
      }
  
      return {
          pubVar: pubVar,
          pubFn: pubFn
      };
  
  }());
  
  myModule.pubFn();
  </code></pre>
  
  <p>I understand it's being caused by the use of <code>this</code> in a function declaration, but I read something Crockford wrote and he said the violation is meant to prevent global variable pollution - but the only global variable here is the one I'm explicitly defining... <code>myModule</code>. Everything else is held in the immediate function scope, and I should be able to use <code>this</code> to refer to the module.</p>
  
  <p>Any ideas how I can get this pattern to pass?</p>
  
  <p><strong>Update:</strong> if I use a function expression instead of a declaration, this seems to work, ie</p>
  
  <pre><code>var pubFn = function () { ...
  </code></pre>
  
  <p>I'm not a fan of this format though, prefer to have the function name and named params closer and the declaration looks/feels cleaner. I honestly don't see why this is throwing the violation - there's no reason for it in this pattern.</p>