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