参考: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实现的更多相关文章

  1. Javascript aop(面向切面编程)之around(环绕)

    Aop又叫面向切面编程,其中“通知”是切面的具体实现,分为before(前置通知).after(后置通知).around(环绕通知),用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被 ...

  2. javascript AOP(面向切面编程)

    var func = function () { console.log("2") } Function.prototype.before = function (beforefn ...

  3. javascript AOP

    Function.prototype.bind = function(b) { var a = this; return function() { a.apply(b, arguments) } }; ...

  4. JavaScript面向切面编程入门

    来源极客网学习视频 关键词Javascript AOP编程 例子1: function test() { alert(2); } //理解,所谓的传入一个"回调",该怎样设计bef ...

  5. Dojo动画原理解析

    dojo中动画部分分为两部分:dojo/_base/fx, dojo/fx.dojo/_base/fx部分是dojo动画的基石,里面有两个底层API:animateProperty.anim和两个常用 ...

  6. dojo/aspect源码解析

    dojo/aspect模块是dojo框架中对于AOP的实现.关于AOP的详细解释请读者另行查看其它资料,这里简单复习一下AOP中的基本概念: 切面(Aspect):其实就是共有功能的实现.如日志切面. ...

  7. Javascript如何实现AOP

    简介: AOP(面向切面的编程)是为了解决功能的独立性与可维护性而提供的一种编程思想.当多个函数大量重复使用同一个功能时通过分层切分,将功能平衡的划分,从而提高低耦合性. JS中实现: index.h ...

  8. 聊Javascript中的AOP编程

    Duck punch 我们先不谈AOP编程,先从duck punch编程谈起. 如果你去wikipedia中查找duck punch,你查阅到的应该是monkey patch这个词条.根据解释,Mon ...

  9. AOP 在javascript 中的使用

    AOP(Aspect Oriented Programming) 意为面向切面编程 可以在不修改原有代码的情况下增加新功能,利用AOP可以对业务逻辑各个部分进行隔离,从而使得业务逻辑各部分的耦合度降低 ...

随机推荐

  1. jQuery常用技巧-使用的总结

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用do ...

  2. Http 请求

    public static string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Creat ...

  3. MVC系列之二 Model层细解

    一.简介 在上一篇将MVC的时候,有很有朋友对简单三层的概念不是很熟悉,因此,今天进行简单三层的一个简单介绍,同时为理解MVC中的Model做知识累计. 传统的三层主要指的是UI层,BLL层,DAL层 ...

  4. SVN Unable to connect to a repository at URL问题解决

    图1 之前用的好好的,不知道为什么今天就不行了,根据网上给的方法TortoiseSVN -> Settings -> Saved Data,点击个个"Clear"按钮, ...

  5. jquery之wrap(),wrap(),unwrap()方法详解

    [注]wrap():为每个匹配元素外面添加指定的HTML结构, wrapAll(): 为所有匹配元素(作为一个整体)外面添加一个指定的HTML结构 原文地址:http://www.365mini.co ...

  6. C# 文件流相关操作

    二进制转换成图片: MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream(ms ...

  7. ServiceStack.OrmLite 笔记9 -code first 必须的代码优先

    复杂点的使用3 code first的使用,支持复杂类型 public enum PhoneType { Home, Work, Mobile, } public enum AddressType { ...

  8. 请求webservice接口的某方法数据

    NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.com/xxx/xxxxWS?wsdl"]; NSString *soapMs ...

  9. shape into blocks--source code in python based on pySpark

    这是微博深度和广度预测的原始代码,写了大约半个月,第一个版本不是这样的,但是这个版本包含所有需要的功能. 模块化的程度也更高.找工作前一直想用python完美解决这个问题,后来发现自己的方法和硬件都有 ...

  10. Spark.ML之PipeLine学习笔记

    地址: http://spark.apache.org/docs/2.0.0/ml-pipeline.html   Spark PipeLine 是基于DataFrames的高层的API,可以方便用户 ...