深入理解JavaScript—观察者模式(publish/subscribe)

深入理解JavaScript—观察者模式(publish/subscribe)

观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象。它是由两类对象组成,主题和观察者,主题负责发布事件,同时观察者通过订阅这些事件来观察该主体,发布者和订阅者是完全解耦的,彼此不知道对方的存在,两者仅仅共享一个自定义事件的名称。 在Nodejs中通过EventEmitter实现了原生的对于这一模式...

深入理解JavaScript—自定义事件

深入理解JavaScript—自定义事件

很多DOM对象都有原生的事件支持,向div就有click、mouseover等事件,事件机制可以为类的设计带来很大的灵活性,相信.net程序员深有体会。随着web技术发展,使用JavaScript自定义对象愈发频繁,让自己创建的对象也有事件机制,通过事件对外通信,能够极大提高开发效率。 简单的事件需求 事件并不是可有可无,在某些需求下是必需的。以一个很简单的需求为例,在web开发中Dia...

深入理解JavaScript—event(事件对象)

深入理解JavaScript—event(事件对象)

1. 事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象. 事件通常与函数结合使用,函数不会在事件发生前被执行! 2. 事件流 2.1 事件流发展史 事件发展史,这...

Javascript日期类型的巧用

Javascript日期类型的巧用

获取某个月份的天数 相信大家读小学的时候就知道一年十二个月各有多少天了,这里面有个特殊的存在——2月。闰年的2月有29天,非闰年的2月只有28天。估计不少人跟我一样,已经不记得闰年的规则了,这时候,下面的这个方法就派上用场了。 var date = new Date(2013, 2, 0); date.getDate(); // 28 date = new Date(2012, 2, 0)...

编写可维护性代码

编写可维护性代码

今天的web应用大至成千上万行的javascript代码,执行各种复杂的过程,这种演化让我们开发者必须得对可维护性有一定的认识!编写可维护性代码很重要,很多情况下我们是以他人的工作成果为基础,确保代码的可维护性,以便其他开发人员更好地工作。 可维护性代码的特点 可理解性:其他人可以接手代码并理解它的意图,无需原开发人员花太多时间解释! 直观性:代码中的东西一看就能明白,尽管其操作过程复杂...

.NET加密算法之AES

.NET加密算法之AES

下面的示例演示如何加密,并解密示例数据使用 Aes 类别。 using System; using System.IO; using System.Security.Cryptography; namespace Aes_Example { class AesExample { public static void Main() { try {...

requestAnimationFrame的兼容性处理

requestAnimationFrame的兼容性处理

requestAnimationFrame 是专门为实现高性能的帧动画而设计的一个API。目前,各个支持requestAnimationFrame的浏览器有些还是自己的私有实现,所以必须加前缀,对于不支持requestAnimationFrame的浏览器,我们只能使用setTimeout,因为两者的使用方式几近相同,所以这两者的兼容并不难。对于支持requestAnimationFrame的...

Web前端模块化管理工具

Web前端模块化管理工具

      今天,我介绍另外四种前端模块管理器:Bower,Browserify,Component和Duo。它们各自都有鲜明的特点,很好地弥补了Require.js的缺陷,是前端开发的利器。      需要说明的是,这篇文章并不是这四种模块管理器的教程。我只是想用最简单的例子,说明它们是干什么用的,使得读者有一个大致的印象,知道某...