Having trouble getting the following to pass jslint/jshint
/*jshint strict: true */
var myModule = (function() {
    "use strict";
    var privVar = true,
        pubVar = false;
    function privFn() {
        return this.test; // -> Strict violation.
    }
    function pubFn() {
        this.test = 'public'; // -> Strict violation.
        privFn.call(this); // -> Strict violation.
    }
    return {
        pubVar: pubVar,
        pubFn: pubFn
    };
}());
myModule.pubFn();
I understand it's being caused by the use of this 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... myModule. Everything else is held in the immediate function scope, and I should be able to use this to refer to the module.
Any ideas how I can get this pattern to pass?
Update: if I use a function expression instead of a declaration, this seems to work, ie
var pubFn = function () { ...
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.
 
     
     
    