宝哥软件园

消除空间的最佳实践

编辑:宝哥软件园 来源:互联网 时间:2021-10-16

上次有同学提问。你可以考验一下自己。我们来看看劳道在《JavaScript 精粹》 P33写了什么。他将trim()方法扩展到String对象:复制的代码如下: function . prototype . method=function(name,func){ this . prototype[name]=func;归还这个;};String.method('trim ',function(){ return this.replace(/^s | s $/g ' ');});嗯,/ s | s $/g是正则表达式。使用了多少帧?比如jQuery的trimLeft、trimRight:复制代码如下://用于修剪空白区域trimleft=/ s/,trimright=/ s $/。这是最好的做法吗?但是,我们的框架不使用这种方法(暂时称为半正则方法)。上次其他产品组在内部PK的时候,我说为什么我们的框架要用下面的方法来实现trim(),而不是上面的方法。复制代码如下: trim : function(){ var str=this . str . replace(/ s/,' ');for(var I=str . length-1;I=0;i - ){ if(/S/。test(str . charat(I))){ str=str . substring(0,I ^ 1);打破;} }返回字符串;}原因工友们已经说了,因为常规反向匹配比较慢。我比较了它的性能。就速度和写作而言,个人还是更喜欢第一次写作。因为速度差其实很小。从代码的角度来看,第二个比较晦涩,有很多并行字节。对于一个流量大但trim()少的网站来说,第一个显然是适合的。看看下面的测试结果(自己测试,这里slam):(9500 . 163.com)。

啊?原来半正规的方式最快。是的,事实上,默认情况下,许多高级浏览器已经提供了trim()。更别说速度了,100倍?哈哈哈。最后方案如下:复制代码如下: if(!string . prototype . trim){ string . prototype . trim=function(){ return this.replace(/^s | s $/g ' ');} }

更多资讯
游戏推荐
更多+