Не удалось получить следующее: 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();
Я понимаю, что это вызвано использованием this в объявлении функции, но я прочитал что-то, что написал Крокфорд, и он сказал, что нарушение предназначено для предотвращения глобального переменного загрязнения - но единственной глобальной переменной здесь является то, m явно определяет... myModule. Все остальное хранится в области непосредственных функций, и я должен иметь возможность использовать this для ссылки на модуль.
Любые идеи, как я могу получить этот шаблон?
Обновление:, если я использую выражение функции вместо объявления, это работает, т.е.
var pubFn = function () { ...
Я не поклонник этого формата, но предпочитаю, чтобы имя функции и имена параметров были ближе, и декларация выглядит/чувствует себя чище. Я честно не понимаю, почему это бросает нарушение - нет причин для этого в этом шаблоне.