实现1
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ 的 * /,' ')。更换( / / *美元,);
}

看起来不像。它使用了两个正则替换,和实际的速度是非常惊人的,主要是由于浏览器的内部优化。字符串拼接的一个著名的例子,直接加入了阵列比StringBuffer更快,实现由二类库的使用。

实现2
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ + /,' ')。更换( / + $ /,);
}

它是实现1非常相似,但慢一点,主要的原因是,它是假设至少有一个空白character.prototype.js第一个使用这个实现,但它的名字是条状的,因为原型的方法都是相同的名字,露比。

实现3
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.substring(math.max(this.search( / /),0),this.search( / / * $)+ 1);
}

共有四个本地方法是截断得到的空白部分调用(当然,中间有一个缺口),设计巧妙,和子串需要两个数字作为一个parameter.math.max是一个有两个数的参数,和搜索返回一个数字的速度比前两慢,但速度比最下面的。

实现4
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ + | + $ /克,);
}

这可以说是2的简化版本,它是利用候选操作符连接两个正规化。但是这将失去机会,优化浏览器,不是3,因为它看起来优雅,许多图书馆使用,如jQuery和MooTools

实现5
复制代码代码如下所示:
string.prototype.trim =函数(){
var =;
STR = str.match( / +( 的+的+)* /);
返回0 };
}

比赛是返回一个数组,所以原始字符串部分符合要求的元素,成为其元。为了防止坯料被排除在绳子中间,我们需要使用非捕获分组(::口)。由于数组是空的,我们有在后作出进一步的决定。似乎在处理组浏览器弱和慢字。所以不要迷信规则,虽然它基本上是通用的。

实现6
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ *(*( S + S +)*) * $ / 1美元);
}

Provide the required part and put it in an empty string.But the efficiency is poor, especially in the IE6.

实现7
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ *(*(: S + S +)*) * $ / 1美元);
}

它类似于实现6,但由于非捕获包的优点,性能效率稍有改善。

实现8
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ *(((::{ 的 } * S)) * $ / 1美元);
}

在上面两个改进,采用非捕获分组和字符集,取而代之的是一个惊人的效果,尤其是在IE6,你可以用疯狂来形容的推广性能,直接秒杀火狐。

实现9
复制代码代码如下所示:
string.prototype.trim =函数(){
返回this.replace( / ^ *({ }的 * *)$ / 1美元);
}

这一次是用懒惰的匹配替换了非捕获组,在Firefox中改进了IE IE上次没有那么疯狂。

实现10
复制代码代码如下所示:
string.prototype.trim =函数(){
var =,
空格=◎◎◎R T F x0b 一 U2000 u2001 u2002 u2003 u2004 u2005 u2006 u2007 u2008 u2009 u200a u200b u2028 u2029 U3000;
对于(var i = 0,len = str.length;我< len;i++){
如果(whitespace.indexof(str.charat(I))= = = 1){
STR = str.substring(我);
打破;
}
}
对(我= str.length - 1;我> = 0;我--){
如果(whitespace.indexof(str.charat(I))= = = 1){
STR = str.substring(0,i + 1);
打破;
}
}
返回whitespace.indexof(str.charat(0):STR = 1);
}

我只想说,行这事的人不是牛,而是一个神一样的水平。首先列出所有可能的空白,切断先序遍历前面的空白,并把背面空白的第二次。整个过程只使用索引和子串,一个本地方法专门用于处理字符串,而不是作为常规,以惊人的速度,估计实现内部二进制差不多,并在伊江和火狐浏览器(其他浏览器当然毫无疑问)具有良好的性能,速度是零毫秒。

实现11
复制代码代码如下所示:
string.prototype.trim =函数(){
var =,
STR = str.replace( / ^ + /,);
对于(var i = str.length - 1;我> = 0;我--){
如果( / /。试验(str.charat(我))){
STR = str.substring(0,i + 1);
打破;
}
}
返回字符;
}

实施10告诉我们常见的原生字符串截取远比定期更换,虽然它有一点复杂,但只要规律不太复杂,我们可以使用浏览器来优化正则化来提高程序的执行效率,如实现8,我不认为任何人会用实施10在项目中,因为空格实现太难记。(当然,如果你要建一个类库,那是第一件事)。11是改进版的空白,前面部分由常规的替换来负责切割,使用原方法后面的处理,效果并不差于原来,但是速度非常的快。

实现12
复制代码代码如下所示:
string.prototype.trim =函数(){
var =,
STR = str.replace( / ^ 的 * /,),
Web服务,
我= str.length;
而(ws.test(str.charat(我)));
返回str.slice(0,i + 1);
}

10实现并实现了11个更好的关于改进版本的措辞,注意到没有性能和使用速度,但容易记住。它的两个前辈是零毫秒,然后工作和恐慌。