`
wangxinxin1212
  • 浏览: 29774 次
社区版块
存档分类
最新评论

javascript中call与apply的使用

阅读更多

业务场景:原有业务逻辑已经封装好,现如今需要在现有逻辑上增加逻辑处理。

实现分析:该业务场景类似于java的AOP,我们可以通过javascript中的call与apply方法实现。

代码: 

		var func1 = function(arg){
			console.info('this is func1 ' + arg);
		}
		
		var func2 = function(arg){//先执行func2中的代码,在执行func1中的代码
			console.info('this is func2');
			arg.call(this,'test');
		}
		
		var func3 = function(arg){//先执行func3中的代码,再执行func1中的代码
			console.info('this is func3');
			arg.apply(this,['test']);
		}
		//调用新方法
		func2(func1);
		func3(func1);

 

 这里需要注意call与apply方法传参的方式。通过以上代码,我们可以看到在执行方法func1时,我们增加了其他的处理逻辑。

上边例子不带直观,举一个实际的应用。

开发web应用,免不了使用AJAX技术。也会经常用到jquery框架。在jquery框架中已经有封装好的ajax调用方法。

jquery中的ajax方法示例:

		$.ajax({
			url : url,
			dataType : 'json',
			type : 'post',
			data : {a : 'a', b : 'b'},
			success : function(result){
                                checkSession(result);
			        1.业务逻辑1
                                2.业务逻辑2
				//执行业务逻辑代码
			}
		});

 

 在回调函数中编写业务逻辑时,避免不了有相同的业务逻辑,最常见的就是对session的判断。为了避免每次使用$.ajax都要编写调用checkSession代码,我们可以将这个方法封装以下

$.extend({
	/**
	 * 封装jquery的ajax方法,
	 * 传入参数为以下格式
	 * arg : {url : url, data : data, func : function}
	 * url : 将会自动添加baseUrl
	 * data: 请求参数, 格式为:{param :param}
	 * func : 回调处理方法 格式为 function(result){}
	 * @param arg
	 */
	ajaxPost : function(arg){
		$.ajax({
			url : baseUrl + '/' +arg.url,
			type : 'post',
			dataType : 'json',
			data : arg.data,
			success : function(result){
				checkSession(result);//检查session
				arg.func.call(this,result);
			}
		});
	}
});

 

 我们可以使用ajaxPost方法来代替ajax方法(这里只封装了post类型),并且不用在每次请求时再手动的编写checkSession代码。

这只是call与apply应用的一个小例子,一般在框架中会经常出现call与apply。

 

0
1
分享到:
评论

相关推荐

    JavaScript中call与apply方法

    JavaScript中call与apply方法

    关于Javascript中call与apply的进一步探讨

    在JavaScript中,`call`和`apply`是两个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`的值),并且可以灵活地传递参数。本篇文章将深入探讨这两个方法的用法、区别以及实际应用场景。 `call`方法...

    javascript中call和apply方法浅谈

    在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向,实现函数的动态绑定。这两个方法都是Function对象的原型方法,可以应用到任何函数上。 首先,让我们深入理解`...

    浅谈javascript中的call、apply、bind_.docx

    其实,ES5 引入 bind 的真正目的是为了弥补 call/apply 的不足,由于 call/apply 会对目标函数自动执行,从而导致它无法在大事绑定函数中使用,而 bind 在实现转变函数 this 的同时又不会执行对应的函数。...

    javascript callApply代码示例

    javascript callApply代码示例

    Javascript 中的 call 和 apply使用介绍

    总的来说,`call`和`apply`是JavaScript中实现动态上下文绑定和灵活参数传递的重要工具,对于理解和使用JavaScript的高级特性,如原型继承、函数封装和异步处理等,具有至关重要的地位。掌握它们的用法能够极大地...

    淡淡简单描述javascript中方法apply和call

    淡淡简单描述javascript中方法apply和call

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...

    javascript中apply和call方法的作用及区别说明

    1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...

    js中call与apply的用法小结

    在JavaScript中,`call` 和 `apply` 是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文,即`this`的指向。本文将深入探讨这两种方法的用法及其在实际编程中的应用。 ### 1. `call` 的基本用法 `...

    JavaScript中call和apply方法的区别实例分析

    本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...

    Javascript中call与apply的学习笔记

    `call`方法可以用来模拟继承,通过在子函数中使用父函数的`call`来继承父函数中的属性和方法。例如: ```javascript function Father() { this.father = 'father'; } function Child() { Father.call(this); ...

    Javascript中call,apply,bind方法的详解与总结

    本文针对JavaScript中三个重要的函数方法——call、apply和bind,进行详尽的分析,并在文章的结尾部分对这三个方法之间的联系和区别进行了概括,以便于读者更深入地理解它们的用途和应用场景。 首先,我们来探讨...

    跟我学习javascript的call(),apply(),bind()与回调

    本文将详细解释JavaScript中call(), apply(), 和 bind() 方法的作用、语法以及使用场景,并且会探讨回调函数的使用,帮助理解这些概念在实际编程中的应用。 首先,我们来探讨call() 和 apply() 方法。这两个方法都...

    call与apply区别 详细解读.pdf

    call和apply是JavaScript中的两个重要方法,它们都是Function.prototype中的方法,这意味着每个函数都可以使用这两个方法。它们的作用是改变函数体内的this对象的值,以扩充函数赖以运行的作用域。 相同点:call和...

    详解js中call与apply关键字的作用.docx

    JavaScript中的`call`和`apply`是两种非常重要的方法,它们都用于改变函数内部`this`的指向,并执行该函数。这两个方法都是Function对象的原型方法,因此所有的函数都具备`call`和`apply`。 1. `call`方法: - `...

    Js的call与apply1

    JavaScript中的`call`和`apply`是两种非常关键的方法,它们允许我们改变函数内部`this`的指向,同时也为实现模拟继承提供了可能。虽然JavaScript不直接支持类继承,但通过`call`和`apply`,我们可以实现类似的效果。...

    js中call与apply的用法小结.docx

    在JavaScript中,`call`和`apply`是两个非常重要的函数,它们都允许开发者改变函数执行时的上下文,即`this`的指向。这两个方法主要用于实现函数的绑定和继承,以及处理数组或类数组对象。 首先,我们来看`call`的...

Global site tag (gtag.js) - Google Analytics