AOP 动态添加函数
Function.prototype.before = function(beforefn) { // 保存原函数的引用 var self = this; // 返回包含了原函数和新函数的代理函数 return function() { // 执行新函数,修正this beforefn.apply(this, arguments); // 执行原函数 return self.apply(this, arguments); }; }; Function.prototype.after = function (afterfn) { var self = this; return function () { // 先调用 调用的函数,在调用afterfn // 调用这个函数的也是一个函数 var ret = self.apply(this, arguments); afterfn.apply(this, arguments); return ret; }; }; var func = function () { console.log(2); }; // 每次使用之前都要这么写一遍 function init(fn) { fn = fn.before(function () { console.log(1); }) .after(function () { console.log(3); }); return fn; } func = init(func); func();
AOP 动态添加函数的更多相关文章
- Python: 为对象动态添加函数,且函数定义来自一个str
转自:http://blog.sina.com.cn/s/blog_55a11f330100ab1x.html 在Python中,通常情况下,你只能为对象添加一个已经写好的方法 需求:传入一个str类 ...
- JS模式--装饰者模式(用AOP动态改变函数的参数)
Function.prototype.before = function (beforefn) { var _self = this; return function () { beforefn.ap ...
- 动态添加HTML时onclick函数参数传递
onclick函数动态传参 1.参数为数值类型时: var tmp = 123; var strHTML = "<div onclick=func(" + tmp + &qu ...
- select 动态添加option函数
转自:https://lym6520.iteye.com/blog/309937 经常会用到select动态添加元素,写了个方法,方便调用! ... /** * 功能:select对象动态添加Opt ...
- 日志系统实战(二)-AOP动态获取运行时数据
介绍 这篇距上一篇已经拖3个月之久了,批评自己下. 通过上篇介绍了解如何利用mono反射代码,可以拿出编译好的静态数据.例如方法参数信息之类的. 但实际情况是往往需要的是运行时的数据,就是用户输入等外 ...
- AOP动态代理解析4-代理的创建
做完了增强器的获取后就可以进行代理的创建了 AnnotationAwareAspectJAutoProxyCreator->postProcessAfterInitialization-> ...
- javascript的document中的动态添加标签
document的高级篇中提供了节点操作的函数,具体包括:获取节点,改变节点,删除节点,替换节点,创建节点,添加节点,克隆节点等函数.我们可以利用这些函数动态改变html的节点. 1.JavaScri ...
- EasyUI创建异步树形菜单和动态添加标签页tab
创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...
- 给Jquery动态添加的元素添加事件
给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...
随机推荐
- 15个开发者最亲睐的Android代码编辑器
如果你希望你的Android设备,如智能手机和平板电脑,在任何时间和任何地方都能够编写代码,那么,不妨看看下面我将介绍的15款Android代码编辑器,它们必将成为你的理想工具. 1.Deuter I ...
- 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法
假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类 ...
- What's Wrong With Hue Oozie Editor?
本文原文出处: http://blog.csdn.net/bluishglc/article/details/47021019 严禁不论什么形式的转载,否则将托付CSDN官方维护权益! First, ...
- SQL--CLR概述
Visual Studio 2005 支持在 SQL Server 2005 中开发.部署和调试托管代码.有一种新的项目类型(称为 SQL Server 项目),它允许开发人员在 SQL Serve ...
- redhat赋予普通用户root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all commands%wheel ...
- Linux Putty 复制粘贴
从putty复制: 用左键选中文字,再其他地方点中键就可以粘贴了,不需要右键粘贴. 在putty中粘贴: 在其他地方用左键选中文字,不用右键复制,保持选中文字高亮,然后在putty中点中键 ...
- mcustomscrollbar滚动条美化插件
mCustomScrollbar 是个基于 jQuery UI 的自定义滚动条插件,它可以让你灵活的通过 CSS 定义网页的滚动条,并且垂直和水平两个方向的滚动条都可以定义,它通过 Brandon A ...
- nginx的gizp压缩
好处: 页面另存为大小比浏览器传输大小大很多.好处是加快传输.节省带宽. 原理: 浏览器 -> 请求 -> 声明可以接受的压缩方式[http 协议请 ...
- 学习Go语言之观察者模式
首先了解一下观察者模式 1.目标和观察者抽象对象需要首先建立 //抽象主题 type Subject interface { Add(o Observer) Send(str string) } // ...
- webstorm 添加 autoprefixer 工具为CSS加前缀
webstrom IDE 的 setting (快捷键 Ctrl + Alt + S) Tool -- External tool (绿色 + 添加) 3.填写 必要的项目 后 apply 备注:N ...