nodejs的hook实现
来源:互联网 发布:保定安全教育网络平台 编辑:程序博客网 时间:2024/06/05 02:09
JavaScript中基于原型的继承机制是动态的:对象从其原型继承属性,如果创建对象之后原型的属性发生改变,也会影响到继承这个原型的所有实例对象。也就是说如果通过某种方法,修改了类的原型中的属性,那么所有通过该原型创建的实例对象的相应属性也会被改变。 nodejs的hook实现利用以上语言特性,将对象中需要hook的属性所对应的原型进行修改,实现hook之目的。以下给出一个例子。
function Range(from, to){ this.from = from; this.to = to; } Range.prototype.include = function(x){return this.from <=x && x <= this.to;}; var r = new Range(1,3); console.log(r.include(2)); //控制台将输出true。
以下是wrap函数的实现:
function wrap(obj, meth) {//obj: 需hook的原型对象//meth:需hook的原型属性名 var orig = obj[meth]; obj[meth] = function wrapper(){ console.log(“function start execute.”); var res = orig.apply(this, arguments); console.log(“functionfinish execute.”); return res; }}
wrap函数调用:
wrap(Range.prototype, 'include');
注:调用wrap可以在实例化Range之前或之后,只需要在实例对象调用被hook属性之前调用该wrap即可生效。示例:
var r = new Range(1,3);wrap(Range.prototype, 'include');console.log(r.include(2)); 控制台将输出:function start execute.function finish execute.true
运行环境:nodejs:v6.11.2 os:win7 64位
阅读全文
0 0
- nodejs的hook实现
- API Hook的实现
- API Hook的实现
- API Hook的实现
- API Hook的实现
- NDIS HOOK及MINIPORT HOOK的实现
- API HOOK的实现原理
- Hook API的实现(pe)
- 全局HOOK的实现学习!
- HOOK实现
- nodejs异步IO的实现
- 一个简单的nodeJS实现
- Nodejs 实现同步的方法
- Supervisor,实现NodeJS的LiveEdit
- Nodejs 实现天气的查询
- NodeJS实现同步的方法
- RPC的nodejs简单实现
- 探索NDIS HOOK新的实现方法
- 笔记—自定义View之绘制基础
- \x 的解码
- HDU 6200 mustedge ACM/ICPC 2017 Shenyang Online(LCT动态缩点)
- 配置WebView
- redis服务器搭建
- nodejs的hook实现
- 预加载与懒加载
- 背包九讲之多重背包 Java
- HDU6201 transaction transaction transaction
- JavaScript基础之基础
- 抽象类和接口
- 常用编辑工具批量多行处理快捷键
- 基于半交互式的裂缝检测方法
- CSS相关