该函数可以让你轻松获知任意函数的传入参数和返回值
注意:该函数使用需要Chrome控制台或者Firebug
App = function(){
function getResultFn(name, fn){
return function(){
console.log("正在执行的函数:" + name);
console.log('该函数的参数列表:');
for(var i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
var res = fn.apply(this, arguments);
if (res) {
console.log('该函数运行结果:');
console.log(res);
}
return res;
}
}
return {
/**
*
* @param {Object} clazz 对象
* @param {Object} name 对象属性名称(该属性必须为函数)
* @param {Object} isPrototype 该属性是否原型属性
*/
check:function(clazz,name,isPrototype){
var p = (isPrototype===true)?clazz.prototype:clazz;
if(!p[name]||typeof p[name]!= 'function'){
console.log('This protperty is not exist or it is not a function!');
return;
}
p[name] = getResultFn(name,p[name]);
}
}
}();
该函数实现用到JS的闭包特性(包了两层)、特殊对象arguments、prototype属性、对象做为关联数组进行使用的知识,对于初学者理解起来肯定有点难度,不过使用起来可是相当的简单,譬如你要监听Array对象的push方法,只需要
App.check(Array,'push',true);
以下是Chrome控制台运行下的结果:
- 大小: 3.8 KB
分享到:
相关推荐
iOS开发者还经常使用Runtime来实现方法选择器(Method Selectors)、协议(Protocols)以及代理(Delegates)。方法选择器是Objective-C中的SEL类型,代表一个方法的唯一标识。协议定义了一组方法签名,类或实例可以...
4. **拦截器**:Struts 2 使用拦截器链来处理请求,拦截器可以实现日志记录、权限验证、异常处理等功能。 5. **OGNL(Object-Graph Navigation Language)**:Struts 2 的默认表达式语言,用于在视图和控制器之间...
这使得动态添加方法、属性和拦截器成为可能。 6. ** Grape(依赖管理)**: - Groovy有自己的依赖管理系统Grape,可以自动下载和管理项目依赖,类似于Maven或Gradle。 7. ** Grape annotations**: - 使用`@Grab...
3. **Struts2 拦截器**:Groovy 可以创建自定义拦截器,增强应用的功能,如权限验证、日志记录等。 4. **Spring 的 DI**:使用 Groovy 定义 Bean,通过注解或 XML 配置文件进行依赖注入,构建对象之间的关系。 5. ...
10.7.1.2 系统实现--计价公式编辑器的实现 10.7.2 创建一个同步滚动歌词播放器 10.7.2.1 需求分析--什么是同步滚动歌词播放器 10.7.2.2 系统设计与实现--处理LRC歌词 10.8 总结 第三部分 ...
文档还简要介绍了控制对象访问、监控对象状态的方法,这包括使用getter和setter(访问器属性)以及JavaScript中的代理对象(Proxy)。代理对象是一种新的对象类型,它允许拦截和定义对象的基本操作,如属性读取、...
3. **闭包**:有时,我们可以通过创建闭包来实现Monkey Patch,尤其是在处理事件监听器时。闭包可以访问并修改外部函数的变量,从而达到修改行为的目的。 4. **AOP(面向切面编程)**:借鉴后端编程的概念,...
在JavaScript中,可以利用`for...of`循环或者数组的`forEach()`方法来实现迭代。 通过深入学习和实践这些设计模式,开发者可以提高代码的可读性、可复用性和可维护性,更好地应对复杂项目的需求。这个“设计模式_...
在JavaScript中,可以利用`Proxy`对象实现这一模式,实现数据的拦截和处理。 6. **装饰器模式**:动态地给一个对象添加一些额外的职责,增强功能而不改变其原有结构。在JavaScript中,装饰器是一种特殊类型的声明,...
- Laravel 中间件作为请求处理的“拦截器”,可以实现权限验证、会话管理等功能,提高代码复用性。 3. **事件与监听器** - **事件系统**:允许开发者在应用程序中触发和响应特定事件,实现解耦和模块化。 - **...
4. **拦截器**:可能提供拦截器机制,允许在路由前进行权限检查、数据预处理等操作。 5. **模块化**:有助于实现应用的模块化设计,每个模块可以有自己的路由规则。 6. **性能优化**:由于是针对Swift优化,...
学习Struts,你需要掌握控制器Servlet、配置文件(struts-config.xml或struts2的struts.xml)、拦截器等核心概念。 其次,JavaScript是一种在客户端运行的脚本语言,用于实现网页的动态交互。`JAVASCRIPT.chm`可能...
例如,通过实现特定的接口,可以自定义类加载器、方法拦截器等,从而实现语言特有的元编程功能。 四、应用场景 JVM上的MOP开源实现广泛应用于各种动态语言的JVM版本,如Groovy、JRuby、Clojure等。这些语言利用MOP...
3. **闭包**:利用闭包保存状态,实现模块化和私有变量。 4. **事件处理**:学会addEventListener和removeEventListener,避免事件冒泡和阻止默认行为。 5. **DOM操作**:熟练使用querySelector、querySelectorAll...
4. **原型模式**:利用JavaScript的原型特性,实现对象间的属性和方法共享,达到代码复用。 5. **代理模式**:为其他对象提供一个代理以控制对这个对象的访问。在JavaScript中,可以用来封装或拦截某些操作。 6. *...
- **闭包**:理解闭包的概念,以及如何利用闭包实现私有变量和方法。 - **原型链**:深入学习JavaScript的对象模型和原型继承机制。 - **异步编程**:探讨事件循环机制、回调函数、Promise、async/await等概念。 ##...
Interceptor是拦截器,允许在Action执行前后进行自定义操作,如日志记录、权限检查等;Result则控制视图的呈现方式,如重定向或转发到特定页面。理解API的使用可以帮助开发者构建更高效、可维护的Struts 2应用。 ...
7. **中间件**:中间件是Laravel处理请求和响应过程中的“拦截器”。它可以用于认证、日志记录、限制访问等功能。例如,`auth`中间件可以确保只有已登录用户才能访问某些路由。 8. **数据库迁移与seed**:Laravel的...
在JavaScript中,可以利用`Proxy`对象实现,用于拦截和修改对目标对象的操作。 8. **适配器模式**:使得原本由于接口不兼容而不能一起工作的类能够协同工作。在JavaScript中,可以创建一个适配器函数或对象,将不同...
开发者可以利用Spring MVC创建RESTful服务,实现前后端分离,并通过拦截器、模型绑定和数据验证等功能增强应用的交互性。 在Spring Framework中,还有Spring Boot,这是一个微服务开发的强大工具。它通过默认配置极...