javascript AOP实现
参考:http://www.cnblogs.com/rubylouvre/archive/2009/08/08/1541578.html
function Person(){
this.say = function(name,lang){
console.log("我的名字叫做"+name+",专注于"+lang+"...");
}
}
(function() {
//AOP(面向切面编程)的javaScript实现
jsAOP = {
/**
* target 切入的目标对象
* method 切入的目标函数(相对于target)
* advice 切入点执行函数
* **/
before:function(target,method,advice){
//备份原函数
var original = target[method];
target[method] = function(){
(advice)();
original.apply(target, arguments);
};
return target
},
after:function(target,method,advice){
var original = target[method];
target[method] = function(){
original.apply(target, arguments);
(advice)();
};
return target
},
around:function(target,method,advice){
var original = target[method];
target[method] = function(){
(advice)();
original.apply(target, arguments);
(advice)();
};
return target
}
};
}());
window.onload = function(){
var p = new Person ();
p = jsAOP.before(p,"say",function() {
console.log("请你介绍一下自己!");
});
p = jsAOP.after(p,"say",function() {
console.log("嗯,不错,明天来上班吧!");
});
p = jsAOP.around(p,"say",(function() {
var index = -1;
return function() {
index++;
if(index == 0) {
console.log("介绍开始!");
}else{
console.log("介绍结束!");
index = -1;
}
};
}()));
p.say("赖祥燃","javascript");
};
参考:http://www.cnblogs.com/rubylouvre/archive/2009/08/08/1541578.html
javascript AOP实现的更多相关文章
- Javascript aop(面向切面编程)之around(环绕)
Aop又叫面向切面编程,其中“通知”是切面的具体实现,分为before(前置通知).after(后置通知).around(环绕通知),用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被 ...
- javascript AOP(面向切面编程)
var func = function () { console.log("2") } Function.prototype.before = function (beforefn ...
- javascript AOP
Function.prototype.bind = function(b) { var a = this; return function() { a.apply(b, arguments) } }; ...
- JavaScript面向切面编程入门
来源极客网学习视频 关键词Javascript AOP编程 例子1: function test() { alert(2); } //理解,所谓的传入一个"回调",该怎样设计bef ...
- Dojo动画原理解析
dojo中动画部分分为两部分:dojo/_base/fx, dojo/fx.dojo/_base/fx部分是dojo动画的基石,里面有两个底层API:animateProperty.anim和两个常用 ...
- dojo/aspect源码解析
dojo/aspect模块是dojo框架中对于AOP的实现.关于AOP的详细解释请读者另行查看其它资料,这里简单复习一下AOP中的基本概念: 切面(Aspect):其实就是共有功能的实现.如日志切面. ...
- Javascript如何实现AOP
简介: AOP(面向切面的编程)是为了解决功能的独立性与可维护性而提供的一种编程思想.当多个函数大量重复使用同一个功能时通过分层切分,将功能平衡的划分,从而提高低耦合性. JS中实现: index.h ...
- 聊Javascript中的AOP编程
Duck punch 我们先不谈AOP编程,先从duck punch编程谈起. 如果你去wikipedia中查找duck punch,你查阅到的应该是monkey patch这个词条.根据解释,Mon ...
- AOP 在javascript 中的使用
AOP(Aspect Oriented Programming) 意为面向切面编程 可以在不修改原有代码的情况下增加新功能,利用AOP可以对业务逻辑各个部分进行隔离,从而使得业务逻辑各部分的耦合度降低 ...
随机推荐
- C++运算法优先级
- Android Context完全解析
Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点分析, ...
- 实现的时钟(time)
<!doctype html><html lang="en"><head> <script type="text/javascr ...
- Linux基本配置
Linux发行版:centos 6.5 配置yum源 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P /etc/yum.repos ...
- 华为S9306简单实用配置合集
华为QuidWay交换机配置命令手册: .开始 建立本地配置环境,将主机的串口通过配置电缆与以太网交换机的Console口连接. 在主机上运行终端仿真程序(如Windows的超级终端等),设置终端通信 ...
- 【LTE基础知识】SGLTE, SVLTE, CSFB, VoLTE
4G网络下实现语音通话功能的技术共有三种--VoLTE.SGLTE(GSM /LTE同步并发)和CSFB(电路域回落).简单来说: VoLTE就是语音数据都在4G通道内完成: SGLTE是语音走2G通 ...
- linux内核中的GPIO系统之(2):pin control subsystem
一.前言 在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况: (1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码.例如:在b ...
- Cheatsheet: 2013 09.10 ~ 09.21
.NET Lucene.Net – Custom Synonym Analyzer Using FiddlerCore to Capture Streaming Audio Immutable col ...
- Nodejs发送Post请求时出现socket hang up错误的解决办法
参考nodejs官网发送http post请求的方法,实现了一个模拟post提交的功能.实际使用时报socket hang up错误. 后来发现是请求头设置的问题,发送选项中需要加上headers字段 ...
- 关于JDK的配置
① 安装官网下载的相应JDK安装包. 现在官网主推JDK8,JDK7以及更老的版本需要注册才能提供下载链接. ② 比如个人下载的jdk7-xxx.exe,安装路径为C:\Program Files\J ...