yui3的AOP(面向切面编程)和OOP(面向对象编程)
来源:uedmagazine.com 发布时间:2009-09-24 14:47:00
首先请把手放胸前成沉思状:我上了生活,还是被生活上了自己?
没想出答案把,恩,可以读下文了。从语义角度讲,同一事物的不同表述可以反映人的主观视角的不同,从哲学角度将,世界观影响方 * ,我们看事物的角度不同,有时会得出截然相悖的结论,从而会影响我们的做事方式和行为准则,现实生活如此,在丰富多彩的编程语言中更是如此,编程模式充满了对现实世界的各种模拟,包括是面向过程,面向对象,还有面向切面。我们大概已经非常熟悉面向过程和面向对象,切面的英文是Aspects(有时译作方面,我感觉用切面更能贴切的表达Aspects的内涵)。
有关AOP的链接看这里:
http://en.wikipedia.org/wiki/Aspect-ori ... rogramming
YUI3中的自定义事件实现了AOP
http://developer.yahoo.com/yui/3/event
什么是切面?举个简单的例子,每天我们上下班挤地铁坐公交和女朋友约会上网吧打游戏去电影院看电影……,一天要做很多事情,每个人都是一个Object,我们做的每件事情都是这个Object的方法,比如,
甲.上班();
乙.坐地铁();
丙.看电影();
其实可以换个角度看,公司需要员工来上班,轨道交通需要每个人去乘坐,电影院给每个人放电影。这样就变成了:
公司.need(甲)
地铁.carry(乙);
电影院.放电影给(丙);
这样看来,不仅甲乙丙每个个体都是一个对象,公司、地铁、电影院也是对象,这种抽象就是传统的面向切面。而在js编程中,程序一般都不大,所以大概不会到达非要使用切面级别的抽象的程度。但其基于事件驱动的原理则很容易让人联想到AOP,上个例子在js中就可能是:
someone.dosth();//OOP
object.fire('event',someone);//AOP
如果脱离上下文来看,上面的代码依然语义牵强。只是很多js框架把切面编程的边缘特性封装成方法,对人造成了很多误导。比如事件的绑定。当函数foo执行结束的时候执行myfoo,在不修改foo的基础上来添加对foo的监听,
var foo = function(){
//some code here
};
jQuery.aop.after(foo,function(){
//added code here
});
猜你喜欢
- 一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时
- 这主要是因为杀毒软件将一些asp关键词当作木马特征,记录保存着,所以遇到有这个关键词,就会禁止运行或删除。解决的方法是将这些关键词给拆开。把
- Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。 一、启动和关闭O
- 1.--区分大小写select * from a where a=’AbCdE’ collate C
- SQL Server服务器的配置选项属于那种人们了解较少且经常误用的选项。当一个技术支持人员要求你按照某种方式调整一个选项、而另一个技术支持
- mssql的每个varchar、text字段都被自动插入一段js代码,即使删除这段代码,如果没有从源头上解决,几分钟后,js代码就又会自动插
- 内容摘要:本文介绍了使用js来实现下拉伸缩导航菜单的功能,并带有渐显的效果,值得收藏。正好这几天公司不忙,学校又没有事情,所以想抽空架一个个
- 这个代码不是很完善,能实现基本的功能;另外有个问题,就是divOpenWin层的定位问题:发现如果其属性设置成display:none,那么
- 可在图片连接后面加上宽和高,如:width="150" height="50"<h
- 一个网站程序,在添加新闻时出现错误以下是错误提示: Microsoft OLE DB Provide
- 您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事
- 目的:JS+ASP打造无刷新新闻列表,下图所示的新闻列表相信大家并不少见,包括新闻的分页功能,本文要介绍的就是各分页间的切换方式。传统的方法
- 怎样才能将在表A取得的数据插入另一个表B中?(1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用 inser
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 在按钮旁边加文字1.打开editor/js/ 两个js文件fckeditorcode_gecko.js fckeditorcode_ie.j
- 我们将在下面的例子中使用这个 XML 文档。<?xml version="1.0" encod
- 阅读上一篇:FrontPage XP设计教程5——表单的设计 在制作出图文并茂的网页之后,很多读者朋友还想让自己的网页能够播放音乐、视频等多
- 可用下列代码实现:<% set conn=server.creatobject("ADODB
- 在ASP中,FSO的意思是File System Object,即文件系统对象。
- 经典鼠标控制左右滚动,图片间隔无缝滚动,悬停滚动,图片控制左右滚动JavaScript代码<!DOCTYPE html PUBLIC