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 这几个方法来处理自定义事件的订阅、退订以及触发等动作,而这几个就是观察者模式中的主要动作了。


猜你喜欢
- 生成HTML方法主要步骤只有两个:一、获取要生成的html文件的内容二、将获取的html文件内容保存为html文件我在这里主要说明的只是第一
- 1、MySQL8.0.16解压其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示2、新建配置文件my.ini放在D:\F
- 本文实例讲述了Python smallseg分词用法。分享给大家供大家参考。具体分析如下:#encoding=utf-8 #import p
- 本文实例为大家分享了python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下需求:代码:import osfilename =
- 有时候我们可能不知道一个用户的密码,但是又需要以这个用户做一些操作,又不能去修改掉这个用户的密码,这个时候,就可以利用一些小窍门,来完成操作
- alert("abacacf".replace('a','9')); alert(&qu
- 逆向最大匹配方法有正即有负,正向最大匹配算法大家可以参阅https://www.jb51.net/article/127404.htm逆向最
- vue-cli 环境变量 process.env使用参考官网: https://cli.vuejs.org/zh/gu
- 1、ModuleNotFoundError: No module named ‘scipy.spatial.transf
- 除了在SSMS中查看view,存储过程等定义,也可以使用下面的语句直接查询:SELECT object_definition(object_
- 本文主要给大家介绍了关于Python中getpass模块的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍:getpass
- 当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者以不带口令的root身份进入数据库.另外如果你是一个管理员,你还要进行一些用户
- 1、安装vue-lazyload插件npm install vue-lazyload --save-dev2、在main.js中进行引用im
- 其中用到urllib2模块和正则表达式模块。下面直接上代码:[/code]#!/usr/bin/env python#-*- coding:
- 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built
- 为了便于操作基本类型值,ECMAScript 提供了 3 个特殊的引用类型:Boolean、Number和 String。这些类型与其他引用
- 一、seaborn概述Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用sea
- 前言本文根据安前松的视频分享整理而来,视频回放地址如下:www.bilibili.com/video/BV1Hr…一、
- With语句是什么?有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个
- 功能描述:1)使用tkinter设计程序界面;2)调用Windows API函数实现录音机和音乐播放器。参考代码:运行界面:总结以上所述是小