Вы могли бы заставить конструктор получить объект или массив, но вы все еще создаете только один экземпляр.
Одним из способов было бы изменить конструктор так, чтобы вы вызывали его как обычную функцию (без new
), и передайте ему массив URL.Затем он будет выполнять итерацию по массиву, делая рекурсивный вызов, но с ключевым словом new
, и перезаписывая каждый URL новым экземпляром.
Затем он возвращает исходный массив.
function InjectScriptsAndExecute(url) {
if (Object.prototype.toString.call(url).indexOf('Array') != -1) {
for (var i = 0, len = url.length; i < len; i++) {
url[i] = new InjectScriptsAndExecute(url[i]);
}
return url;
} else {
this.url = url;
this.injectMethod = function() {
var inject = $.ajax({
url: this.url,
cache: true,
dataType: 'script'
});
return inject;
}
}
}
var arr = InjectScriptsAndExecute(["/Global/ICIS/Scripts/DD_belatedPNG_0.0.8a-min.js",
"/Global/ICIS/Scripts/DD_PNG_listing.js"
]);
var len = arr.length;
while( len-- ) {
arr[len].injectMethod();
}
В целях безопасности вы действительно хотели бы иметь некоторые дополнительные проверки, чтобы увидеть, вызывается ли функция как конструктор или нет.И вы хотели бы иметь соответствующее поведение для каждого из них, в зависимости от того, получил ли он массив или строку.