Не удалось получить следующее: 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 () { ...
Я не поклонник этого формата, но предпочитаю, чтобы имя функции и имена параметров были ближе, и декларация выглядит/чувствует себя чище. Я честно не понимаю, почему это бросает нарушение - нет причин для этого в этом шаблоне.