JavaScript的String提供的工具方法太少,居然连过滤两端空格的 trim() 都没有,不过我们可以为 String 对象添加一些工具方法。
下面有一些常用的方法:
1、去掉字符串两端的空白字符
String.prototype.trim = function() {
return this.replace(/(^\s+)|(\s+$)/g, "");
}
2、 忽
JavaScript的String提供的工具方法太少,居然连过滤两端空格的 trim() 都没有,不过我们可以为 String 对象添加一些工具方法。
下面有一些常用的方法:
1、去掉字符串两端的空白字符
String.prototype.trim = function() {
return this.replace(/(^\s+)|(\s+$)/g, "");
}
2、 忽
方法一:
可以很好的捕获异常,故推荐
[CODE=javascript]
function XHR(){ //创建XMLHttpRequest对象
var xhr;
try{
xhr=new XMLHttpRequest();
}catch(e){
var a=[‘MSXML2.XMLHTTP.5.0′,’MSXML2.XMLHTTP.4.0′,’MSXML2.XMLHTTP.3.0′,’MSXML2.XMLHTTP’,’MICROSOFT.XMLHTTP.1.0′,’MICROSOFT.XMLHTTP.1′,’MICROSOFT.XMLHTTP’];
for (var i=0;i
xhr = new ActiveXObject(a[i]);
break;
}catch(e){}
}
}
if (!xhr) alert(“Error creating the XMLHttpRequest object.”);
else return xhr;
}
[/CODE]
方法二:
简单,一句话搞定
[CODE=javascript]
var xml = window.ActiveXObject ? new ActiveXObject(“Microsoft.XMLHTTP”) : new XMLHttpRequest();
[/CODE]
以下是记录来访次数的代码:
[CODE=javascript]
[/CODE]
主要通过几个实例来学习JavaScript的with、this和自定义构造函数
1、with
with 语句 为一个或一组语句指定默认对象。
用法:with (<对象>) <语句>;
with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:
x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);
当使用 with 语句时,代码变得更短且更易读:
with (Math) {
x = cos(3 * PI) + sin(LN10);
y = tan(14 * E);
}
2、this对象
返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。
一个常用的 this 用法:
<script>
…
function check(formObj) {
…
}
…
</script><body …>
…
<form …>
…
<input type="text" … onchange="check(this.form)">
…
</form>
…
</body>
这个用法常用于立刻检测表单输入的有效性。
3、自定义构造函数
下面是一个搜集浏览器详细资料的自定义构造函数的例子:
function Is() {
var agent = navigator.userAgent.toLowerCase();
this.major = parseInt(navigator.appVersion); //主版本号
this.minor = parseFloat(navigator.appVersion);//全版本号
this.ns = ((agent.indexOf(‘mozilla’)!=-1) &&
((agent.indexOf(‘spoofer’)==-1) && //是否 Netscape
(agent.indexOf(‘compatible’) == -1)));
this.ns2 = (this.ns && (this.major == 3)); //是否 Netscape 2
this.ns3 = (this.ns && (this.major == 3)); //是否 Netscape 3
this.ns4b = (this.ns && (this.minor < 4.04)); //是否 Netscape 4 低版本
this.ns4 = (this.ns && (this.major >= 4)); //是否 Netscape 4 高版本
this.ie = (agent.indexOf("msie") != -1); //是否 IE
this.ie3 = (this.ie && (this.major == 2)); //是否 IE 3
this.ie4 = (this.ie && (this.major >= 4)); //是否 IE 4
this.op3 = (agent.indexOf("opera") != -1); //是否 Opera 3
this.win = (agent.indexOf("win")!=-1); //是否 Windows 版本
this.mac = (agent.indexOf("mac")!=-1); //是否 Macintosh 版本
this.unix = (agent.indexOf("x11")!=-1); //是否 Unix 版本
}
定义:var is = new Is();
之后我们就可以用is.ns或者is.unix判断浏览器的版本了。
今天在feedsky里面的实时统计里面看到了下面的一个信息:
Larbin爬虫,以前没有听说过,如是到网上好好查了一下:
1、larbin的简介
larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret
总结:互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景,尤其是类似RSS的以XML为基础的结构化的数据越来越多,内容的组织方式越来越灵活,检索组织并呈现会有着越来越广泛的应用范围,同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫,信息的来源入口。一个高效,灵活可扩展的爬虫对以上应用都有着无可替代的重要意义。网上已经有人利用larbin 做一些小是搜索引擎来玩,以后又机会了可以去试试。
独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。
Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。
latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,实在是非常高效。
2、Larbin的性能特征: 高效, 基本上一个小时爬 3个G 的网页。差不多20万的页面; url 解析: 200万-300万/小时,但是这样的话肯定会消耗大量资源。
3、larbin 的作用
简单介绍一下 larbin 的功能和实际应用。
1. larbin 获取单个、确定网站的所有联结,甚至可以镜像一个网站。
2. larbin建立 url 列表群,例如针对所有的网页进行 url retrive后,进行xml的联结的获取。或者是 mp3 。
3. larbin 定制后可以作为搜索引擎的信息的来源(例如可以将抓取下来的网页每2000一组存放在一系列的目录结构里面)。
通过 arguments 属性,函数可以处理可变数量的参数。 arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。
例如下面一个函数:
<script type="text/javascript" language="javascript">
function add(){
var sum=0;
for(var i=0;i<arguments.length;i++)
{
sum+=arguments[i];
}
return sum;
}
document.write("arguments应用:"+add(3,4,5,6,7,8)+"<br />");
</script>
这是显示的结果:
全局对象:
eval() 把括号内的字符串当作标准语句或表达式来运行。
isFinite() 如果括号内的数字是“有限”的(介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间)就返回 true;否则返回 false。
isNaN() 如果括号内的值是“NaN”则返回 true 否则返回 false。
parseInt() 返回把括号内的内容转换成整数之后的值。如果括号内是字符串,则字符串开头的数字部分被转换成整数,如果以字母开头,则返回“NaN”。
parseFloat() 返回把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分被转换成浮点数,如果以字母开头,则返回“NaN”。
toString() 用法:<对象>.toString();把对象转换成字符串。如果在括号中指定一个数值,则转换过程中所有数值转换成特定进制。
escape() 返回括号中的字符串经过编码后的新字符串。该编码应用于 URL,也就是把空格写成“%20”这种格式。“+”不被编码,如果要“+”也被编码,请用:escape(‘…’, 1)。
unescape() 是 escape() 的反过程。解编括号中字符串成为一般字符串。
下面是Math,Date对象的一些应用:
<script type="text/javascript" language="javascript">document.write("返回常数 e (2.718281828...):"+Math.E+"<br />");document.write("LN2 返回 2 的自然对数 (ln 2):"+Math.LN2+"<br />");document.write("LN10 返回 10 的自然对数 (ln 10):"+Math.LN10+"<br />");document.write("LOG2E 返回以 2 为底的 e 的对数 (log2e):"+Math.LOG2E+"<br />");document.write("LOG10E 返回以 10 为低的 e 的对数 (log10e):"+Math.LOG10E+"<br />");document.write("返回π(3.1415926535...):"+Math.PI+"<br />");document.write("返回 1/2 的平方根:"+Math.SQRT1_2+"<br />");document.write("返回 2 的平方根:"+Math.SQRT2+"<br />");var x=3,y=4;document.write("abs(x) 返回 x 的绝对值:"+Math.abs(x)+"<br />");document.write("acos(x)返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示:"+Math.acos(x)+"<br />");document.write("asin(x)返回 x 的反正弦值:"+Math.asin(x)+"<br />");document.write("atan(x) 返回 x 的反正切值:"+Math.atan(x)+"<br />");document.write("atan2(x, y) 返回复平面内点(x, y)对应的复数的幅角,用弧度表示,其值在 -π 到 π 之间:"+Math.atan2(x,y)+"<br />");document.write("ceil(x) 返回大于等于 x 的最小整数:"+Math.ceil(x)+"<br />");document.write("cos(x) 返回 x 的余弦:"+Math.cos(x)+"<br />");document.write("exp(x) 返回 e 的 x 次幂 (ex):"+Math.exp(x)+"<br />");document.write("floor(x) 返回小于等于 x 的最大整数:"+Math.floor(x)+"<br />");document.write("log(x) 返回 x 的自然对数 (ln x):"+Math.log(x)+"<br />");document.write("max(a, b) 返回 a, b 中较大的数:"+Math.max(x,y)+"<br />");document.write("min(a, b) 返回 a, b 中较小的数:"+Math.min(x,y)+"<br />");document.write("pow(n, m) 返回 n 的 m 次幂 (nm):"+Math.pow(x,y)+"<br />");document.write("random() 返回大于 0 小于 1 的一个随机数:"+Math.random()+"<br />");document.write("round(x) 返回 x 四舍五入后的值:"+Math.round(x)+"<br />");document.write("sin(x) 返回 x 的正弦:"+Math.sin(x)+"<br />");document.write("sqrt(x) 返回 x 的平方根:"+Math.sqrt(x)+"<br />");document.write("tan(x) 返回 x 的正切:"+Math.tan(x)+"<br />");var d = new Date('Oct 1, 1999');document.write("返回一个字符串,描述日期对象所指的日期:"+d.toString()+"<br />");document.write("返回一个字符串,描述日期对象所指的日期,用本地时间表示格式:"+d.toLocaleString()+"<br />");document.write("返回一个字符串,描述日期对象所指的日期:"+d.toUTCString()+"<br />");document.write("返回该日期对象的内部表达方式:"+Date.parse()+"<br />");document.write("eval() 把括号内的字符串当作标准语句或表达式来运行:"+eval("3+4")+"<br />");document.write("如果括号内的数字介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间返回 true;否则返回 false:"+isFinite(34453453452342)+"<br />");document.write("escape() 返回括号中的字符串经过编码后的新字符串:"+escape("1 在2") +"<br />");document.write("unescape() 是 escape() 的反过程:"+unescape(escape("1 在2")) +"<br />");</script>
运行结果如下:
先看下面关于Number,String,Array基本属性和方法应用的执行效果:
这里是源代码:
[CODE=html]
[/CODE]