文档章节

深入理解js--面向切面编程 AOP

招展君
 招展君
发布于 2015/12/16 14:10
字数 174
阅读 39
收藏 0

js高级--面向切面编程

function demo(){
    alert('2');
    return 'me test';
}

Function.prototype.before= function (fn) {
    var __self = this;
    return function () {
        //这里面的this指向已经发生了变化,谁调用 就指向谁
        if(fn.apply(this,arguments)==false){
            return false;
        }
       return __self.apply(__self,arguments);
    }
}
Function.prototype.after = function (fn) {
    var __self = this;
    return function () {
        var result = __self.apply(__self,arguments);
        if(result ==false){
            return false;
        }
        fn.apply(this,arguments);
        return result;
    }
}

//默认函数被执行两遍,现在思路是要以默认函数为中转
//让默认函数先不执行,
// before回调和before一起送到after里去
//after回调和after也要送到before里去

//将AOP函数改成可以链式触发的函数
var s = demo.before(function () {
    alert('1');
}).after(function () {
    alert('3');
})()

console.log(s);

© 著作权归作者所有

共有 人打赏支持
招展君
粉丝 0
博文 8
码字总数 2941
作品 0
闸北
程序员
通过AOP解耦Javascript中的紧耦合代码

AOP大家都知道,Javascript对于AOP的使用也有一些很好的地方.这几天正好在改别人代码他在javascript用了AOP进行编程,正好仔细说说怎么玩的这个. AOP 单独AOP的概念最早接触是在Java中,面向切片...

顽Shi
2014/10/16
0
1
dojo1.7功能介绍:面向方面编程(AOP)功能与原理

日前发布的dojo 1.7版本对其源码进行了很大的变更。在迈向2.0版本之际,dojo提供了许多新的功能,也对许多已有的功能进行了修改,具体来说新版本更好地支持AMD规范、提供了新的事件处理系统(...

bigYuan
2012/04/13
0
0
JavaScript中高阶函数的魅力

高阶函数是指至少满足下列条件之一的函数 1:函数可以作为参数被传递 2:函数可以作为返回值输出 高阶函数实现AOP AOP(面向切面编程)的主要作用就是把一些和核心业务逻辑模块无关的功能抽取出...

MarkMan
09/05
0
0
用JAVA开发网站,需要学哪些呢?

首先要学JavaSE,在JavaSE完成之后掌握一种编程工具,比如说Eclipse。 数据库,可以选择使用Oracle或者MySQL开始。JDBC,用Java连接数据库。 可以选择在这个地方切入Hibernate,也可以选择在...

小梅菜鸟
2012/04/20
0
0
装饰者模式--AOP装饰

AOP在职责模式中也有使用,甚至都一毛一样,初学设计模式过程中,AOP是性价比最高的,在实际开发中的作用也很重要,学习AOP你可以在不改动原来大量代码功能模块的前提下对功能进行改造,添加...

Rico_wang
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL SQL 常见用法

某字段重复记录 select a.fieldA from tableA a group by a.fieldA having count(a.fieldA)>1;==select * from (select a.fieldA, count(1) as faCount from tableA a group......

园领T
58分钟前
1
0
如何使用 iptables 和 firewalld 工具来管理 Linux 防火墙规则

以下是如何使用 iptables 和 firewalld 工具来管理 Linux 防火墙规则。 防火墙 防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会...

linuxprobe16
今天
1
0
发生系统错误 5 拒绝访问

1、使用命令net start *开启一个服务的时候,出现发生系统错误5,拒绝访问。 解决:切换到管理员模式执行此命令即可。

fang_faye
今天
1
0
devops 成长路线

https://36kr.com/p/5157249.html

swingcoder
今天
1
0
Java内存区域的划分和异常

行时数据区域 JVM在运行Java程序时候会将内存划分为若干个不同的数据区域。 程序计数器 线程私有。可看作是当前线程所执行的字节码的行号指示器,字节码解释器的工作是通过改变这个计数值来读...

架构师springboot
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部