【Javascript】Sizzle引擎--原理与实践(一)

2012-02-15

简述

Sizzle是jQuery的御用选择器引擎,是jQuery作者John Resig写的DOM选择器引擎,速度号称业界第一。 另外,Sizzle是独立的一部分,不依赖任何库,如果你不想用jQuery,可 以只用Sizzle。 所以单独拿出来特别对待。在Prototype1.7中,选择器也采用了Sizzle,不过版本有点老,所以我去Sizzle网站搞...

Read More

【Javascript】Prototype源码浅析—元素选择器部分(一)之$

2012-02-03

简述  

$ 方法是 Prototype 的基础,和jquery中的$作用差不多,不过功能却弱了很多。 因为Prototype中还有一个\(方法,看名字就知道,和$相比,\)加了一倍的钱,功能肯定就丰富撒。本文主要是剖析$方法,1.7版本的$$方法使用的是Sizzle引擎,比较复杂,是后面的事情。

基本原理 Read More

【Javascript】Prototype源码浅析—Date

2012-02-02

Date

Date比较好理解,理解清楚了 Number 对象的 toPaddedString 方法就可以了。

只有两个方法(toJSON和toISOString),而且这两个方法还一样,就是将日期转换为 JSON 字符串(遵循 ISO 格式)。

代码很短,我直接贴上来:

Read More

【Javascript】Prototype源码浅析—Hash部分(一)

2012-01-31

Hash

Hash是Prototype作者扩展出来的一个数据类型。 本质上他就是一个普通的javascript对象(注:不要纠结什么javascript变量都是对象,这里说new Object()那种),然后在这个对象上面扩展出来一些其他的方法。

基本原理

基本的原理的代码说明就是:

...
Read More

【Javascript】Prototype源码浅析—Enumerable部分(二)

2012-01-17

剩下的方法太多,于是分作两部分。

亮点就是$break和$continue,以及grep方法的思想。

前面each方法中掉了一个方面没有说,就是源码中的$break和$continue。 这两个变量是预定义的,其作用相当于普通循环里面的break和continue语句的作用。 出于效率的考虑,在某些操作中并不需要完全遍历一个集合(不局限于一个数组),所以...

Read More

【Javascript】Prototype源码浅析—Enumerable部分(一)

2012-01-16

在javascript中,根本找不到 Enumerable 的影子,因为这一块是Prototype作者从Ruby中借鉴过来的。 并且Enumerable在实际中根本没有直接应用的机会,都是混入到其他的对象中,可以说是其他对象的一个“父类”(不过只是调用了Object的extend方法,进行了方法的直接拷贝而已)。

我并不熟悉Ruby,不过看Enumerable中的一些方...

Read More