Fork me on GitHub
随笔 - 265  文章 - 0  评论 - 1075  阅读 - 230万
06 2012 档案
精通 JS正则表达式
摘要:正则表达式可以:•测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证•替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字•根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字正则表达式语法一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。创建正则表达式Js代码varre=newRe 阅读全文
posted @ 2012-06-30 14:07 【艾伦】 阅读(82356) 评论(14) 推荐(70) 编辑
JavaScript Memoization:让函数也有记忆功能
摘要:realazy在blog上给出了一个JavaScript Memoization的实现,Memoization就是函数返回值的缓存,比如一个函数参数与返回结果一一对应的hash列表,wiki上其实也有详细解释,我不细说了,只讨论一下具体实现的问题,realazy文中的代码有一些问题,比如直接用参数拼接成的字符串作为查询缓存结果的key,如果参数里包括对象或数组的话,就很难保证唯一的key,还有1楼评论里提到的:[221,3]和[22,13]这样的参数也无法区分。那么来改写一下,首先还是用hash表来存放缓存数据:functionMemoize(fn){ varcache={}; returnf 阅读全文
posted @ 2012-06-30 10:27 【艾伦】 阅读(726) 评论(0) 推荐(1) 编辑
向服务器请求数据的五种技术
摘要:Ajax,在它最基本的层面,是一种与服务器通讯而不重载当前页面的方法,数据可从服务器获得或发送给服务器。有多种不同的方法构造这种通讯通道,每种方法都有自己的优势和限制。 有五种常用技术用于向服务器请求数据: (1)XMLHttpRequest (XHR) (2)动态脚本标签插入 (3)框架 (4)Comet (5)多部分的XHR 在现代高性能JavaScript中使用的三种技术是XHR,动态脚本标签插入和多部分的XHR。使用Comet和iframe(作为数据传输技术)往往是极限情况,不在这里讨论。一、XMLHttpRequest 目前最常用的方法中,XMLHttpRequest(XHR)用来. 阅读全文
posted @ 2012-06-30 10:10 【艾伦】 阅读(15060) 评论(2) 推荐(4) 编辑
正则表达式中的回溯
摘要:在大多数现代正则表达式实现中(包括JavaScript所需的),回溯是匹配过程的基本组成部分。它很大程度上也是正则表达式如此美好和强大的根源。然而,回溯计算代价昂贵,如果你不够小心的话容易失控。虽然回溯是整体性能的唯一因素,理解它的工作原理,以及如何减少使用频率,可能是编写高效正则表达式最重要的关键点。因此后面几节用较长篇幅讨论这个话题。 当一个正则表达式扫描目标字符串时,它从左到右逐个扫描正则表达式的组成部分,在每个位置上测试能不能找到一个匹配。对于每一个量词和分支,都必须决定如何继续进行。如果是一个量词(诸如*,+?,或者{2,}),正则表达式必须决定何时尝试匹配更多的字符;如果遇到分支( 阅读全文
posted @ 2012-06-30 10:05 【艾伦】 阅读(5502) 评论(0) 推荐(1) 编辑
正则表达式工作原理
摘要:粗浅地编写正则表达式是造成性能瓶颈的主要原因,但还有很多可以改进正则表达式效率的地方。两个正则表达式匹配相同的文本并不意味着他们具有同等的速度。 许多因素影响正则表达式的效率,首先,正则表达式适配的文本千差万别,部分匹配时比完全不匹配所用的时间要长。每种浏览器的正则表达式引擎也有不同的内部优化。 为了有效地使用正则表达式,重要的是理解它们的工作原理。下面是一个正则表达式处理的基本步骤: 第一步:编译 当你创建了一个正则表达式对象之后(使用一个正则表达式直接量或者RegExp构造器),浏览器检查你的模板有没有错误,然后将它转换成一个本机代码例程,用于执行匹配工作。如果你将正则表达式赋给一个变量. 阅读全文
posted @ 2012-06-30 10:02 【艾伦】 阅读(5203) 评论(0) 推荐(1) 编辑
闭包与柯里化
摘要:闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式编程特征,就需要深入的了解这两个概念,闭包事实上更是柯里化所不可缺少的基础。一、柯里化的概念 在计算机科学中,柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由Christopher Strachey以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。在直觉上,柯里化声称“ 阅读全文
posted @ 2012-06-30 09:59 【艾伦】 阅读(680) 评论(0) 推荐(2) 编辑
Javascript中currying的实现
摘要:Currying好像是函数式语言都有的一个特性,比如Perl,Python,Javascript。那么到底什么是Currying,我是在学习Closure时无意中接触到这个定义的,觉得很是有趣。先看看Wiki中的定义:Curryingis the technique of transforming afunctionthat takes multipleargumentsin such a way that it can be called as a chain of functions each with a single argument.大概的意思就是说,将拥有多个参数的函数Curryi 阅读全文
posted @ 2012-06-30 09:22 【艾伦】 阅读(2130) 评论(1) 推荐(2) 编辑
JavaScript 记忆 Memoization
摘要:函数可以用对象去记住先前操作的结果,从而能避免无谓的运算,这种优化被称为记忆(Memoization)。JavaScript 的对象和数组要实现这种优化是非常方便的Memoization 是一种将函数返回值缓存起来的方法,在 Lisp, Ruby, Perl, Python 等语言中使用非常广泛。随着 Ajax 的兴起,客户端对服务器的请求越来越密集(经典如 autocomplete),如果有一个良好的缓存机制,那么客户端 JavaScript 程序的效率的提升是显而易见的。Memoization 原理非常简单,就是把函数的每次执行结果都放入一个散列表中,在接下来的执行中,在散列表中查找是否已 阅读全文
posted @ 2012-06-30 04:38 【艾伦】 阅读(502) 评论(1) 推荐(2) 编辑
Webkit是如何加载网页的
摘要:原文:How WebKit Loads a Web Page在WebKit渲染网页之前,它需要将页面和所有引用的资源加载完毕。其中会涉及到不同层面的工作。在本文中,我将重点关注WebCore(WebKit中主要渲染组件)是如何在加载过程中发挥作用的。WebKit包含两条加载流水线,其中一条负责将文档加载到frames当中,另一条负责加载其他资源(比如图片、脚本一类)。下图描述了两条流水线中涉及的主要对象。加载FramesFrameLoader负责将文档加载到frames当中,当点击链接时,FrameLoader会创建一个新的DocumentLoader对象,并置于“policy”状态,接着就等 阅读全文
posted @ 2012-06-29 18:10 【艾伦】 阅读(1189) 评论(0) 推荐(1) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示