YUI学习笔记(4)

作者:xujiwei 来源:HotHeart's BLOG 时间:2009-03-10 18:25:00 

YAHOO.util.Subscriber 与 YAHOO.util.CustomEvent。

1. YAHOO.util.Subscriber (event.js)

这应该算是设计模式中的观察者模式了,Subscriber 订阅一个事件,在 Publisher 触发那个事件后,会逐个通知 Subscriber。

对于一般开发者来说,并不需要去关心 Subscriber 的实现,因为 Subscriber 主要是 CustomEvent 用来分发动作以及删除 Subscriber 的。

Subscriber 类只定义了 3 个属性:fn、obj 以及 override,3 个方法:getScope、contains、toString,其中 fn 为订阅者的回调函数,obj 为要传递给回调函数的一个额外参数,override 如果是布尔型的 true 值,那么表示使用 obj 属性为回调函数执行时的上下文,或者直接使用一个对象来作为回调函数执行的上下文。

Subscriber 的 3 个方法中比较有用的是 getScope 和 contains,toString 只是简单的将 Subscriber 对象转换成一个字符串。getScope 会根据 Subscriber 对象的 override 属性来获取回调函数执行的上下文,contains 用来判断 Subscriber 对象与指定的回调函数和 obj 是否一致。

2. YAHOO.util.CustomEvent (event.js)

CustomEvent 的作用相当在观察者模式中发布者的身份,可以通过它来实现一个自己的事件发布者。

CustomEvent 构造函数的定义如下:

CustomEvent = function(type, oScope, silent, signature)

在创建 CustomEvent 对象时,几个参数的用途如下:

type 是自定义事件的名称,在使用回调函数的参数格式为 YAHOO.util.Event.LIST 时,回调函数的第一个参数就是 CustomEvent 对象的名称;

oScope 是执行回调函数时的上下文对象,也就是在回调函数中可以用 this 来引用这个对象;

silent 参数是用指示是否在 YUI 为 debug 版本时禁用调试信息;

signature 用来指示回调函数参数的格式,可以为 YAHOO.util.Event.FLAT 或 YAHOO.util.Event.LIST,默认是 YAHOO.util.Event.LIST。

在使用 CustomEvent 之前,先要了解一下 CustomEvent 中回调函数参数的格式,CustomEvent 的回调函数可以有两种格式,一种为 YAHOO.util.Event.LIST,这种格式的回调函数具有三个参数,分别是事件名称、参数数组和附加对象参数;另外一种回调函数参数格式为 YAHOO.util.Event.FLAT,这个时候回调函数只有两个参数,一个为 CustomEvent 对象调用 fire 方法时的第一个参数,另外一个是订阅时的额外对象参数。

在创建 CustomEvent 对象时,CustomEvent 构造函数还会首先创建一个内部的自定义事件,用来处理该自定义事件被订阅的事件,这在 EventProvider 中用到,这里暂且不提。

CustomEvent 对象使用一个名为 subscribers 的数组来保存所有订阅者的列表,并且通过维护这个列表来维护该自定义事件的订阅者。

CustomEvent 对象提供了 subscribe、unsubscribe、unsubscribeAll、fire 这几个方法来处理自定义事件的订阅、退订以及触发等动作,而这几个就是观察者模式中的主要动作了。

标签:YUI,笔记,yahoo,JavaScript
0
投稿

猜你喜欢

  • 在asp中使用js的encodeURIComponent方法

    2012-11-30 20:05:53
  • ASP存储过程开发应用详解第1/2页

    2011-04-07 11:16:00
  • 发散后的期望

    2008-07-31 18:32:00
  • ASP内置对象Request和Response用法详解

    2007-09-14 10:35:00
  • 使用Alt提升可访问性

    2009-04-04 19:22:00
  • 简单form标准化实例——整体布局

    2007-05-11 17:04:00
  • asp上传文件自动重命名方法

    2007-08-24 09:46:00
  • ASP短日期格式为长日期

    2009-06-11 12:53:00
  • SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句

    2012-07-11 15:28:50
  • asp自动采集程序

    2009-02-04 10:11:00
  • ASP教程:制作登陆验证页面程序

    2008-10-23 15:00:00
  • Javascript: 为<input>设置readOnly属性问题,希望大家以后要小心

    2009-07-23 20:24:00
  • 变态输入框——再谈校验包容性(一)

    2009-10-10 13:23:00
  • 当标题不能显示完整的时候

    2007-11-20 13:23:00
  • 用户体验在商业利益面前什么都不是

    2009-06-12 12:07:00
  • 初学者必读:经典的数据库记录分页代码

    2009-01-08 15:27:00
  • oracle 时间格式的调整

    2009-05-24 19:32:00
  • JavaScript面向对象的简单介绍

    2008-06-27 12:37:00
  • 做了CDN加速的ASP网站获取用户真实IP程序

    2011-02-16 10:59:00
  • MYSQL中取得最后一条记录

    2010-03-09 16:08:00
  • asp之家 网络编程 m.aspxhome.com