JS拦截方法
2016-04-21 16:24
731 查看
关于JS拦截方法
在网上找了好久关于JS拦截方法的文章,没有什么发现,仔细研究后整理如下代码,还望大家多多指正。其实最主要的就是
Object.getOwnPropertyNames(example).forEach(function (property)这段代码,遍历对象内部的所有方法,判断如果是方法并且等于方法名,则进行拦截,这里我拦截的window全局所有方法,但是感觉不太好,不知可否有大神指点如何只拦截全局自定义的方法,过滤掉window对象内自身的方法。
original.apply(example, Array.prototype.slice.call(arguments));这段代码的意思是将原有方法再添加回去,如果去掉将不执行原有方法内代码,执行拦截传递的方法代码
<span style="font-family: Arial, Helvetica, sans-serif;">intercept(window,"hello",fn);</span>
function intercept(example,funName,fun){ //example 遍历对象,funName需要拦截的方法名 ,fun拦截后执行的方法 Object.getOwnPropertyNames(example).forEach(function (property) { var original = example[property]; if (typeof original === "function"&&original.name == funName) { example[property] = function () { if(fun){ fun(property); }else{ return false; } original.apply(example, Array.prototype.slice.call(arguments)); } } }); } function fn(property){ console.log('Intercepted call to function:', property); } function hello(varstr){ console.log('varstr=',varstr); } hello('test');
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享