javascript 动态织入 拦截(aop) 代码与动态继承




var person = {};
obj.name = "xxx";
obj.sex = "yyy";
obj.myFunction = function(){ alter(obj.name); }

var ePer = {};
ePer ['field'] = 'field';
ePer.myFunction = function(){ alter(ePer .'field') };

ePer.extendBy = function(parant){
for(var i in person ){
if(parant[i]=="undefine")continue;
extendPer[i] = parant[i];
}
}
//进行继承 或重载
ePer.extendBy(person);

var person2 = function(){

this.field1 = "xxx";
};
person2.prototype.myFn = function(){
return this.field1;
}

//多继承
ePer.extendBy(new person2());


/****************************************************
动态 javascript aop 呵呵
*****************************************************/
//动态运行时的拦截代码织入 操作类

var aopEmbed = function(){

/** 拦截前
* exeAop 自定义拦截代码
* aimObj 被拦截的类
* aimMethod 所拦截的目标方法名
* scope 拦截方法执行时 的运行作用域
**/
this.beforEmbed = function(exeAop,args1,aimObj,args2,aimMethod,scope){

this['BScope'] = aimObj[aimMethod];
aimObj[aimMethod] = function(){
exeAop.call(scope,args1);
this['BScope'].call(scope,args2);
}
}
//拦截后
this.afterEmbed = function(exeAop,args1,aimObj,args2,aimMethod,scope){

this['BScope'] = aimObj[aimMethod];
aimObj[aimMethod] = function(){
this['BScope'].call(scope,args2);
exeAop.call(scope,args1);
}
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值