有这样的代码:
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 中这是不可能的。
运算符
new将this函数内部设置为新创建的对象。因此,如果this不在函数内部使用,它可以作为一个信号,表明这里new也可能不需要它。从问题中的代码来看:getNewArts方法被添加到创建的对象中,因此使用
new是非常合理的。另一方面,由于创建更多这种类型的对象并非完全微不足道,构造函数调用可以替换为返回对象的简单函数调用:
在这种情况下,不需要操作员
new。