javascript正则表达式实现trim()疑惑
正在看 javascript高级程序设计 ,其中关于分组里面的一句代码不是太理解:
通过配合使用String对象的replace()方法及反向引用,就可以定义自己的trim()方法:
String.prototype.trim = function() {
var reExtraSpace = /^\s+(.*?)\s+$/;
return this.replace(reExtraSpace,"$1");
}
一开始怎么也不理解 trim() 方法是怎么起作用的
var sTest = " this is a test ";
alert("[" + sTest + "]"); //outputs " [ this is a test ] "
alert("[" + sTest.trim() + "]"); outputs " [this is a test] "
后来查了一下 javascript 里面 StringObject 的 replace(regexp,replacement)
方法的第二个参数replacement里面的"$"特殊含义:
$n表示第 n 个子表达式 , 也就是 .*?
原来分组就是正则表达式的子表达式
相关文档:
ECMAScript有无用存储单元收集程序,当在再没有对对象的引用时,称该对象被废除(dereference)了。
运行无用存储单元收集程序时,所有废除的对象都被销毁。
把对象的所有引用都设置为null,可以强制性的废除对象,例如:
var oObject = new Object;
.......
&n ......
用于枚举对象的属性
例:
for(sProp in window)
{
alert(sProp); //显示BOM window对象的所有属性。
}& ......
with语句
用于设置代码特定对象的作用域。
例:
var sMessage = "hello world";
with(sMessage)
{
&nbs ......
delete只能删除开发者定义的属性或方法,原始的ECMAScript方法不能删除,因为不是开发者定义的,比如:toString()。
var o = new Object;
o.name = "Nicholas";
delete o.name;
&n ......