JavaScript精粹读书笔记(7)
http://blog.csdn.net/mouyong/archive/2010/01/31/5275562.aspx
第7章 正则表达式
JavaScript的许多特性都借鉴自其他语言。语法借鉴自Java,函数借鉴自Scheme,原型继承借鉴自Self。而JavaScript的正则表达式特性则借鉴自Perl。
正则表达式起源于对形式语言的数学研究。
在JavaScript中,正则表达式的语法是对Perl版的改进和发展,它非常接近源自贝尔实验室的原始形式。正则表达式的书写规则出奇的复杂,因为它们把某些位置上的字符串解析为运算符,而把仅在位置上稍微不同的相同字符串又当作字符串本身。比不易书写更糟糕的是,这使得正则表达式不仅难以阅读,而且修改时充满危险。要想正确地阅读它们,就必须对正则表达式的整个复杂性有相当彻底的理解。为了缓解这个问题,我对其规则进行了些许简化。这里所展示的正则表达式可能稍微有些不够简洁,但也会让正确地使用它们变得稍微容易一点。
有点让人感到费解的是,JavaScript的正则表达式难以分段阅读,因为它们不支持注释和空白。正则表达式的所有部分都被紧密排列在一起,使得它们几乎无法被辨认。当它们在安全应用中进行扫描和验证时,这点就须要特别地留意。如果你不能阅读和理解一个正则表达式,你如何能确保它对所有的输入都能正确地工作呢?然而,尽管有这些明显的缺点,但正则表达式还是被广泛地使用着。
7.1 一个例子
这里有一个例子。它是一个用来匹配URL的正则表达式。在JavaScript程序中,正则表达式必须写在一行中。正则表达式中的空白是至关重要的:
var parse_url=/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url="http://www.ora.com:80/goodparts?q#fragment";
让我们来调用parse_url的exec方法。如果能成功地匹配我们传给它的字符串,它将会返回一个数组,该数组包含了从这个url中提取出来的片段:
var result=parse_url.exec(url);
var names=['url','scheme','slash','host','port','path','query','hash'];
var blanks=' ';
var i;
for(i=0;i<names.length;i+=1){
document.writeln('<br />'+names[i]+':'+blanks.substring(names[i].length),result[i]);
相关文档:
ECMA 本周推出了 JavaScript 5(PDF),除了增强基础函数库之外,还引入了严格运行时模式(Strict Runtime Modes)以避免代码中的常见错误。ECMA ECMAScript 4 的努力曾以失败告终,ECMA 甚至没有发布 ECMAScript 4 细则。
过去几年,诸如 Nitro,TraceMonkey 一类的 JavaScript 引擎发展迅猛,JavaScript 成了 Google Wav ......
这主要用于选择器过滤重复元素时用的。
涉及三种可能的手段:sourceIndex,uniqueID与自定义的uuid。
sourceIndex 获取元素节点在页面的出现顺序,即为其在document.all集合中的索引号。由于要准确获取先后位置,如果在其前面插入一个元素节点,那么它的位置就要加一。换言之,它是动态分配的,每次都要重复计算。注意,I ......
第9章
代码风格
计算机程序是人类制造出来的最复
杂的事物。程序通常由很多部分组成,表现为函数、语句和表达式,它们必须准确无误地按照顺序排列。最终的结果几乎都和实现它的程序没有什么相似之处。在软
件的产品生命周期中,通常它们都会被修改。把一个正确的程序转化为另一个同样正确但风格不同的程序,是 ......
http://blog.csdn.net/mouyong/archive/2009/12/07/4959741.aspx
第4章 函数
JavaScript中最好的特性就是它对函数的实现。它几乎无所不能。但是,想必你也能预料到,函数在JavaScript里也并非万能药。
函数包含一组语句,它们是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。函数用于指定� ......
http://blog.csdn.net/mouyong/archive/2010/01/10/5169396.aspx
第5章 继承
在那些基于类的语言(比如Java)中,继承(inheritance或extends)提供了两个有用的服务。首先,它是代码重用的一种形式。如果一个新的类与一个已存在的类大部分相似,那么你只须具体说明其不同点即可。类继承的另一个好处是它包括� ......