這個問題涉及到以前的問題在這裏:性能OOJS超過功能JavaScript編程
Reducing number of calls to the methods of a JavaScript object
如果在分析這兩個代碼片段與螢火蟲:
function ie6PNGFixLoader(scriptURL) {
if(arguments.length > 0) {
for (var i = 0; i < arguments.length; i++) {
$.ajax({// load PNG fix scripts
url: arguments[i],
cache: true,
dataType: 'script'
});
}
} else {
return false;
}
}
var pngFix = "/Global/ICIS/Scripts/DD_belatedPNG_0.0.8a-min.js";
var pngList = "/Global/ICIS/Scripts/DD_PNG_listing.js";
ie6PNGFixLoader(pngFix, pngList);
和
function InjectScriptsAndExecute(url) {
this.url = url;
}
InjectScriptsAndExecute.prototype.InjectMethod = function() {
var inject = $.ajax({
url: this.url,
cache: true,
dataType: 'script',
async: false, // Otherwise you cannot depend on the parse order
});
return inject;
}
var pngFix = new InjectScriptsAndExecute("/Global/ICIS/Scripts/DD_belatedPNG_0.0.8a-min.js");
var pngList = new InjectScriptsAndExecute("/Global/ICIS/Scripts/DD_PNG_listing.js");
pngFix.InjectMethod();
pngList.InjectMethod();
它表明後者的InjectScrip tsAndExecute方法比前者對函數的調用快得多。一位同事問我爲什麼提到性能改進,但我自己無法解釋。
任何有助於更好理解的建議都會得到很好的接受。
您將不得不發佈更多關於性能測量的信息。這些之間的主要區別不在於編碼風格(這幾乎不會產生可衡量的差異),而是ajax操作的不同設置(異步與同步)。 – Pointy 2011-01-10 14:40:56