摘要: var $ = function() {};$.prototype.onDomReady = function(callback) { if (document.addEventListener) { // If the browser supports the DOMContentLoaded e 阅读全文
posted @ 2012-03-02 17:53 Miracle He 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: 经过了"面向对象的Javascript系列"的预热,让我们再次起航进入Javascript富客户端系列。基于链式调用关于类库的讲解,本讲将一步一步搭建一个属于自己的JS框架类库。在这里,不妨问问大家:一个类库怎样才能算有价值的类库呢?我想不妨从以下几个方面去考量:1). 避免改变JS固有的基础对象。即如对JS对象Function,String,Array等,不要试图改变这些对象的行为来适应你的场景。2). 具有良好的版本控制和文档注释。即JS类库必须有详细的文档,以备使用者能更快的应用。3). 具有规范命名空间的约定。即JS类库必须添加完整的命名空间,有利于开发者快速定位自 阅读全文
posted @ 2012-03-02 17:49 Miracle He 阅读(6182) 评论(8) 推荐(6) 编辑
摘要: 在我们平常的web开发中,已经存在各种大型的专业Javascript类库(JQuery,Prototype,ExtJS)等,它们都充分利用了Javascript面向对象的思想,使得类库更加富有灵活性和健壮性,但其中最关键的是利用了Javascript的链式调用,这也就是我们今天要谈到的话题了。那什么是链式调用呢?简单的说,就是把一系列对DOM元素的操作以某种形式关联起来,使得使用很少的代码就能完成很强大的功能(Write Less, Do More)。下面我将一个示例来比较一下非链式调用和链式调用的区别所在。//非链式调用addEvent($('test'), 'cli 阅读全文
posted @ 2012-02-28 22:33 Miracle He 阅读(2091) 评论(2) 推荐(4) 编辑
摘要: 在我们经常面对的面向对象高级语言中,继承早已是老生常谈的话题了。但对于javascript这门极富灵活性的语言来说,继承却是一门复杂的技术。那么继承到底能带来什么好处呢?如果我们希望减少更多的重复性工作,弱化对象间的耦合性,在现有类的基础上并充分利用已具备的方法进行设计,那么继承不失为一种更好的解决方案了。为了能达到我们想要的目标,可以采用类式继承,也可以采用原型式继承。可能有的人会问:我有两个类并没有所谓的"is a"的关系,但却都有个相同的方法要调用,我该怎么办?我们知道,在面向对象中可以采用接口去实现。在本篇文章中,我采用混元类的方式来解决这种问题并会探讨适合场景。 阅读全文
posted @ 2012-01-31 00:35 Miracle He 阅读(2080) 评论(2) 推荐(1) 编辑
摘要: 在"初识Javascript"章节中,提到通过作用域和闭包来隐藏内部细节,并给外部提供访问接口,就初次接触到了信息隐藏的概念了。同时,我们知道在面向对象的高级语言中,创建包含私有成员的对象是最基本的特性之一,提供属性和方法对私有成员进行访问来隐藏内部的细节。虽然JS也是面向对象的,但没有内部机制可以直接表明一个成员是公有还是私有的。还是那句话,依靠JS的语言灵活性,我们可以创建公共、私有和特权成员,信息隐藏是我们要实现的目标,而封装是我们实现这个目标的方法。我们还是从一个示例来说明:创建一个类来存储图书数据,并实现可以在网页中显示这些数据。1. 最简单的是完全暴露对象。使用 阅读全文
posted @ 2012-01-20 15:43 Miracle He 阅读(2531) 评论(2) 推荐(0) 编辑
摘要: 接口是面向对象Javascript工具箱中最有用的特性之一。我们都知道GOF在设计模式中说到:面向接口编程,而非面向实现编程。就足以说明接口在面向对象的领域中有多重要。但JS却不像其他面向对象的高级语言(C#,Java,C++等)拥有内建的接口机制,以确定一组对象和另一组对象包含相似的的特性。所幸的是JS拥有强大的灵活性(我在上文已谈过),这使得模仿接口特性又变得非常简单。那么到底是接口呢? 接口,为一些具有相似行为的类之间(可能为同一种类型,也可能为不同类型)提供统一的方法定义,使这些类之间能够很好的实现通信。那使用接口到底有哪些好处呢?简单地说,可提高系统相似模块的重用性,使得不同类的通信 阅读全文
posted @ 2012-01-20 12:17 Miracle He 阅读(2397) 评论(4) 推荐(1) 编辑
摘要: Javascript是一门极富表现力的语言,在当今大行其道的Web浪潮中扮演着非常关键的作用。合理、高效地利用这门技术,可以让我们的Web世界多姿多彩。首先,我们认识一下这门技术的几个独特的特性。1. Javascript最大的特性在于其灵活性。作为一名前端开发人员,既可以采用函数式的编程风格,也可以采用更复杂一点的面向对象的编程风格。不管你采用哪种风格,都可以完成一些非常有用的任务。因而,Javascript是一门面向过程的语言,同时也是一门面向对象的语言,进而可以模仿面向对象语言的编程模式和惯用法。我们用一个例子来说明:启动和停止动画。如果你习惯于函数式的编程风格,代码会如下:functi 阅读全文
posted @ 2012-01-18 01:44 Miracle He 阅读(3463) 评论(3) 推荐(8) 编辑
摘要: 在上一次我设计了一个带光晕的文本框,类似于QQ2011,给我们的网页增加了美感和动感。最后,我留给大家的是对文本框的继续优化,这次我增加了水印效果和提示效果。可能很多人说这些在Jquery中已经有内置插件了,为什么还需要自己去写呢?我历来的标准是:“拿来主义”分情况。对于已经满足我们要求且易于配置的的插件,我们直接拿来用就是。但是对于不能满足我们要求且本身已经很复杂的插件,则更愿意自己动手去写,以便了解整个插件的设计流程。下面就不废话了,先来看水印吧。我们设想了一个最简单的例子就是普通的文本框(<input type='text' id='txtName' 阅读全文
posted @ 2011-12-28 22:57 Miracle He 阅读(3514) 评论(10) 推荐(6) 编辑
摘要: 我们都知道默认的Asp.Net文本框很丑陋的,看到QQ2011版的登录输入文本框那种光晕效果,不免让我们很是向往,不过我查看了源码却发现是通过C++实现的,那如何在我们的Asp.Net中添加同样的功能呢?先给大家秀一下我的运行截图:默认文本框样式:鼠标移入文本框:是不是很酷呢?下面我将一一解释如何做出来的?首先我们建立一个WebSite应用程序。在开始做之前建立一个文件夹plugins/textbox并引入Jquery库,在textbox子文件夹下再添加一个images文件夹(包含一张背景图:border.png),大概的文件夹结构应该如下:接着我们开始设计粗略版的html结构,大致如下:&l 阅读全文
posted @ 2011-12-23 18:50 Miracle He 阅读(3811) 评论(9) 推荐(0) 编辑
摘要: 大家在平时学习Asp.Net进行web开发时,为了满足项目需要,将开发大量满足需求的自定义控件。那关于自定义控件的生命周期如何呢,与页面生命周期有何区别呢?我今天跟大家详细解释一下:控件生命周期大概有11个阶段,对于特殊的页面(其实也是一种控件System.Web.UI.Page)的生命周期有更详细的阶段,比如对于每一种控件来说,都只有一个Init事件,但是Page对同一个事件却分成了PreInit, Init, InitComplete三个阶段。其具体的职责如下:PreInit: 完成模板页和主题的设置,只有这一次机会,一旦到了Init阶段将不能更改。Init: 依次触发子控件的Init事件 阅读全文
posted @ 2011-12-20 11:02 Miracle He 阅读(2499) 评论(3) 推荐(2) 编辑