我只是想知道这段Javascript会不会减慢我的网站速度:
$(function(){
var realLink = location.href;
$( "#nav a" ).each(
function( intIndex ){
String.prototype.startsWith = function(str){
return (this.indexOf(str) === 0);
}
var pageLink = $(this).attr("href");
if ( realLink.startsWith(pageLink) )
$(this).parent().addClass("active");
}
);
});
它只循环5-7次,而且我没有太多的Javascript循环经验。
发布于 2009-12-21 11:43:45
这个代码片段本身没有什么问题,只是您经常在一个循环中创建一个函数并将其分配给String.prototype.startsWith
。当然,这是一项不必要的工作,至少应该是:
$(function(){
var realLink = location.href;
String.prototype.startsWith = function(str){
return (this.indexOf(str) === 0);
};
$( "#nav a" ).each(
function( intIndex ){
var pageLink = $(this).attr("href");
if ( realLink.startsWith(pageLink) )
$(this).parent().addClass("active");
}
);
});
我也不认为有必要在这里使用intIndex
参数。它不会在函数中的任何地方使用。
发布于 2009-12-21 11:43:22
您可以通过将代码更改为:
String.prototype.startsWith = function(str){
return(this.indexOf(str) == 0);
}
$(function(){
var realLink = location.href;
$('#nav a').each(function(intIndex){
var pageLink = $(this).attr("href");
if(realLink.startsWith(pageLink))
$(this).parent().addClass("active");
});
});
它打破了startsWith()
的定义,因此您不必为循环的每个迭代都定义它。
发布于 2009-12-21 11:45:46
尝试使用Firebug's Profiling Feature来测量脚本的性能。
https://stackoverflow.com/questions/1938037
复制相似问题