A2D JS框架 - AOP封装
Posted By:AntTribe/折磨 Date:2013/8/12 0:55:57 最后修改:2013/8/12 0:55:57 Click Rate:393

AOP在js中的实现,先看看用法吧:

复制代码
 var A2D = $.noConflict();//不要误会,此乃我自己写的A2D框架,非jQuery function fn1(name, age) {
            console.log("name: " + name);
            console.log("age: " + age);
        } function b1() {
            console.log("b1");
            console.log("b1, parameters - 0: " + arguments[0]);
            console.log("b1, parameters - 1: " + arguments[1]);
            console.log("b1, parameters - 2: " + arguments[2]);
            console.log("b1, parameters - 3: " + arguments[3]);
            console.log("b1, parameters - 4: " + arguments[4]);
            console.log("b1, parameters - 5: " + arguments[5]);
        } function b2() {
            console.log("b2");
        } function a1() {
            console.log("a1");
        } function a2() {
            console.log("a2");
        } var aopfn1 = A2D.aop(fn1, {
                                            before: [b1, b2],
                                            after: [a1, a2]
                                        });
        aopfn1.execute("aaron", 20);
复制代码

核心A2D代码实现(before和after AOP,实现了6个参数):

复制代码
function aop(fn, config) { if (!fn instanceof Function)
            alert("fn must be a function"); if (config == null || config == undefined || !config instanceof Object)
            alert("config can not be empty"); function aopWrapper(fn, config) { this.realFunction = fn; this.beforeFunctions = config.before.concat(); this.afterFunctions = config.after.concat();
        }
        aopWrapper.prototype.execute = function () { if (this.beforeFunctions) for (var fn in this.beforeFunctions) this.beforeFunctions[fn].call(this.realFunction,    arguments[0],
                                                                        arguments[1],
                                                                        arguments[2],
                                                                        arguments[3],
                                                                        arguments[4],
                                                                        arguments[5]); this.realFunction.call(this.realFunction,   arguments[0],
                                                        arguments[1],
                                                        arguments[2],
                                                        arguments[3],
                                                        arguments[4], 
                                                        arguments[5]); if (this.afterFunctions) for (var fn in this.afterFunctions) this.afterFunctions[fn].call(this.realFunction,     arguments[0],
                                                                        arguments[1],
                                                                        arguments[2],
                                                                        arguments[3],
                                                                        arguments[4],
                                                                        arguments[5]);
        }

        wrapper = new aopWrapper(fn, config); return wrapper;
    }
复制代码

 

有图有真相:


标签: A2D JS框架 - AOP封装
摘要:A2D JS框架 - AOP封装


收录查询 Copyright ? 2024  广西佳馨科技   地址:广西佳馨科技  电话:13878876479   QQ:120947546  电子邮件:1447876499@qq.com   站点提供API   桂ICP备14003626号-1
关闭 X