Q:

Как лучше использовать конструкторы анонимных функий?

Есть примерно такой код:
var request = new function(){
  var 
    jsonAjaxResult, 
    countOfDownloadingArts;

  function downloadArts(){
   return Promise((resolve, reject) => {
     // Код для загрузки картинок
   });
  }

  function downloadJSON(){
    return Promise((resolve, reject) => {
      // Код для загрузки json-а
    });
  }

 this.getNewArts = (numberOfShowingArts = 20) => {
   // Обработчик очереди возвращающихся промисов для загрузки 
   // заданного количества картинок (формальный параметр)
 }
}

В нем я использую методы таким образом:
request.getNewArts(40); 

Весьма удобно.
Но когда я пишу такого рода конструкцию, то jsLint ругается такой ошибкой:
Weird construction. Is 'new' necessary?

Ну вот и интересуюсь, почему я не могу в качестве конструктора использовать анонимную функцию? Как я понимаю, это просто некрасиво с точки зрения логики, но мне нужен действительно один экземпляр этого функционала.
Как тогда быть? Забить на ошибку или можно как-нибудь переписать код?
Честно говоря, хотелось бы, чтобы было так:
function request(){
  // функции и переменные
}
// И использовать вот так:
request.getNewArts(40);

Но увы, в js так нельзя, как я понимаю.

A:

Оператор new устанавливает this внутри функции на новый созданный объект. Таким образом, если this не используется внутри функции, это может служить сигналом тому, что и new тут может быть не нужен.
Судя по коду в вопросе: в создаваемый объект добавляется метод getNewArts, следовательно использование new вполне оправдано.
С другой стороны, так как создать еще несколько объектов этого типа будет не совсем тривиально, вызов конструктора можно заменить обычным вызовом функции, возвращающей объект:
var request = function(){
  var 
    jsonAjaxResult, 
    countOfDownloadingArts;

  function downloadArts(){
   return Promise((resolve, reject) => {
     // Код для загрузки картинок
   });
  }

  function downloadJSON(){
    return Promise((resolve, reject) => {
      // Код для загрузки json-а
    });
  }

  return {
    getNewArts : (numberOfShowingArts = 20) => {
      // Обработчик очереди возвращающихся промисов для загрузки 
      // заданного количества картинок (формальный параметр)
    }
  }
}();

В этом случае оператор new не нужен.

