摘要: Sizzle引擎?是啥?不懂?用过jQuery不?没错,JQ的核心就是这个。话不多说,开始分析一、Sizzle构造器在jquery.fn.init()构造器函数中,通过调用jQuery(context).find(selector)函数来解析并匹配DOM元素。jQuery.find()函数实际上是引用Sizzle()函数,而Sizzle()函数仅是Sizzle引擎的构造器,它主要调用Sizzle.find()函数在DOM文档树中查找与CSS语法相匹配DOM的元素节点的集合。jQuery名字中Query的意义就体现在这里。下面来分析一下Sizzle构造器函数。该函数是整个Sizzle引擎的入口。 阅读全文
posted @ 2011-10-17 15:46 spemoon 阅读(375) 评论(0) 推荐(0) 编辑
摘要: jQuery的开篇声明里有一段非常重要的话:jQuery是为了改变javascript的编码方式而设计的.从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库.jQuery改变javascript编码方式!那么它是如何实现它的声明的呢?这里,用以下的一段简短的使用流程:1)查找(创建)jQuery对象:$(”selector”);2)调用jQuery对象的方法完成我们需要完成的工作:$(”selector”).doOurWork();ok,jQuery就是以这种可以说是最简单的编码逻辑来改变javascript编码方式的.这两个步骤是jQuery的编码逻辑核心!要实现这种简 阅读全文
posted @ 2011-06-15 18:38 spemoon 阅读(154) 评论(0) 推荐(0) 编辑
摘要: this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如, function test(){ this.x = 1; }随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。下面分四种情况,详细讨论this的用法。情况一:纯粹的函数调用这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。请看下面这段代码,它的运行结果是1。 function test(){ this.x = 1; alert(this.x); } test(); // 1为了证明this就 阅读全文
posted @ 2011-06-15 17:53 spemoon 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 今天是最后一个部分,介绍不使用构造函数实现"继承"。一、什么是"非构造函数"的继承?比如,现在有一个对象,叫做"中国人"。 var Chinese = { nation:'中国' };还有一个对象,叫做"医生"。 var Doctor ={ career:'医生' }请问怎样才能让"医生"去继承"中国人",也就是说,我怎样才能生成一个"中国医生"的对象?这里要注意,这两个对象都是普通对象,不是构造函数,无法使用构造函数方法实 阅读全文
posted @ 2011-06-13 00:16 spemoon 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 今天要介绍的是,如何生成一个"继承"多个对象的实例。比如,现在有一个"动物"对象的构造函数, function Animal(){ this.species = "动物"; }还有一个"猫"对象的构造函数, function Cat(name,color){ this.name = name; this.color = color; }怎样才能使"猫"继承"动物"呢?1. 构造函数绑定最简单的方法,大概就是使用call或apply方法,将父对象的构造函数绑定在子对象上,也就是 阅读全文
posted @ 2011-06-13 00:15 spemoon 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 学习Javascript,最难的地方是什么?我觉得,Object(对象)最难。因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握。下面就是我的学习笔记,希望对大家学习这个部分有所帮助。我主要参考了以下两本书籍:《面向对象的Javascript》(Object-Oriented JavaScript)《Javascript高级程序设计(第二版)》(Professional JavaScript for Web Developers, 2nd Edition)它们都是非常优秀的Javascript读物,推荐阅读。笔记分成三部分。今天的第一部分是讨论"封 阅读全文
posted @ 2011-06-13 00:14 spemoon 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 说明白prototype对象到底是怎么回事。其实根本就没那么复杂,真相非常简单。一、从古代说起要理解Javascript的设计思想,必须从它的诞生说起。1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互 阅读全文
posted @ 2011-06-13 00:12 spemoon 阅读(102) 评论(0) 推荐(0) 编辑
摘要: Javascript语言的设计不够严谨,很多地方一不小心就会出错。举例来说,请考虑以下情况。现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下: if (myObj不存在){ 声明myObj; }你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。第一种写法根据直觉,你可能觉得可以这样写: if (!myObj) { myObj = { }; }但是 阅读全文
posted @ 2011-06-12 23:10 spemoon 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 搜索引擎每天处理着数以亿计的查询请求,每个查询请求都代表了一个用户对于某种资源的特定需求。多数时候,通过查询返回的网页结果,这些需求被满足了,我们可以认为结果中的某些页面对特定用户的特定需求产生了价值。那么对于搜索引擎而言,页面的价值是指什么,我们为什么要研究页面价值,技术上怎样判断页面的价值呢?本文将逐一回答这些问题。一、什么页面价值。前面我们说了,某个页面满足了某一用户的特定需求,就体现了这个页面对用户的价值。那么对搜索引擎而言,价值体现在哪些方面呢?一个简单的推论,所有可能会对用户产生价值的页面都是对搜索引擎有价值的,将这些页面建入搜索引擎的索引中能够满足最终检索到它们用户的需求,我们称 阅读全文
posted @ 2011-06-12 22:53 spemoon 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1. ==Javascript有两组相等运算符,一组是==和!=,另一组是===和!==。前者只比较值的相等,后者除了值以外,还比较类型是否相同。请尽量不要使用前一组,永远只使用===和!==。因为==默认会进行类型转换,规则十分难记。如果你不相信的话,请回答下面五个判断式的值是true还是false: false == 'false' false == undefined false == null null == undefined 0 == ''前三个是false,后两个是true。2. withwith的本意是减少键盘输入。比如 obj.a = obj. 阅读全文
posted @ 2011-06-12 22:40 spemoon 阅读(121) 评论(0) 推荐(0) 编辑