第2章 语言模块中提到Mootools中startsWith方法的实现是
function startsWith(target, str, ignorecase){
var start_str = target.substr(0, str.length);
return ignorecase ? start_str.toLowerCase() === str.toLowerCase() : start_str === str;
}
很好奇为什么不直接用indexOf。。。感觉可能是因为性能问题,所以用这个indexOf实现的startsWith2
function startsWith2(target, str, ignorecase){
return ignorecase ? str.toLowerCase().indexOf(target.toLowerCase()) === 0 : str.indexOf(target) === 0;
}
在chrome上测了一下执行时间比较了一下,发现比原来那个还要快一些。。。。。。@_@
console.time('startsWith');
for(var i = 0; i<10000000; ++i){
startsWith('haha', 'hahahei', true);
}
console.timeEnd('startsWith');
>>> startsWith: 620.35791015625ms
console.time('startsWith2');
for(var i = 0; i<10000000; ++i){
startsWith2('haha', 'hahahei', true);
}
console.timeEnd('startsWith2');
>>> startsWith2: 125.35205078125ms
不知道原来那个里面为什么要那样写,望大佬指点。。
本文探讨了Mootools库中startsWith方法的实现原理,对比了使用substr与indexOf方法的性能差异,并通过实验发现后者在Chrome浏览器下执行速度更快。
759

被折叠的 条评论
为什么被折叠?



