【JavaScript】JavaScript回调函数

什么是Javascript 回调函数?

函数和其他数据一样可以被赋值,删除,拷贝等,所以也可以把函数作为参数传入到另一个函数中。

这个函数就是所谓的回调函数

举例:

//不带参数的case

function A(b, c) {

return b() + c();

}

function B() {

return 10;

}

function C() {

return 7;

}

console.log(A(B, C));

//带参数的case

//(将参数重组后,传入d, 作为回调函数的参数,这里给我们提供了灵活性,回调函数的参数,完全由我们做主)

function A(m, n, fun) {

var d = m+n;

return fun(d);

}

function fun(c) {

return c

}

console.log(A(5, 4, fun));

//result (firebug 测试结果)

关于:(http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html

Javascript call和apply方法

call和apply方法用于切换方法的执行上下文,这是一个非常酷的特性。(它两个的区别是参数形式不一样,作用相同)

区分apply,call就一句话,

foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments) == this.foo(arg1, arg2, arg3)

call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.

call, apply方法区别是,从第二个参数起, call方法参数将依次传递给借用的方法作参数, 而apply直接将这些参数放到一个数组中再传递, 最后借用方法的参数列表是一样的.

举例:用B的setMessage方法给A的message属性赋值

function funA(){

this.message;

this.getMessage = function() {

return this.message;

}

}

function funB(){

this.message;

this.setMessage = function(msg) {

this.message = msg;

}

}

var b = new funB();

var a = new funA();

b.setMessage.call(a, "this is a‘s message!");

console.log(a.getMessage());

//Not Work Case:

//如果message是私有属性就不work

function funA(){

var message;

this.getMessage = function() {

return message;

}

}

function funB(){

var message;

this.setMessage = function(msg) {

message = msg;

}

}

var b = new funB();

var a = new funA();

b.setMessage.call(a, "this is a‘s message!");

console.log(a.getMessage());

//result (firebug 测试结果)

举例:为数组增加两个方法,其中用到回调函数

Function.prototype.method = function(name, fn) {

this.prototype[name] = fn;

return this;

}

if ( !Array.prototype.forEach ) {

//这里fn 作为回调函数,我们为它定义了三个参数 数组元素,数组元素的序号,数组本身

Array.method(‘forEach‘, function(fn, thisObj) {

var scope = thisObj || window;

for ( var i = 0, len = this.length; i < len; ++i ) {

fn.call(scope, this[i], i, this);

}

});

}

if ( !Array.prototype.filter ) {

Array.method(‘filter‘, function(fn, thisObj) {

var scope = thisObj || window;

var a = [];

for ( var i = 0, len = this.length; i < len; ++i ) {

if ( !fn.call(scope, this[i], i, this) ) {

continue;

}

a.push(this[i]);

}

return a;

});

}

举例测试:

Function.prototype.method = function(name, fn) {

this.prototype[name] = fn;

return this;

}

if ( !Array.prototype.forEach ) {

Array.method(‘forEach‘, function(fn, thisObj) {

var scope = thisObj || window;

for ( var i = 0, len = this.length; i < len; ++i ) {

fn.call(scope, this[i], i, this);

}

});

}

//因为Javascript参数是可变的,所以定义callback方法时,参数个数自己选择,但是注意顺序

var a = function(item, i, array) {

console.log("array[" + i + "] ->" + item + "    array:" + array);

}

var array = [1, 28, ‘163‘, 4, ‘javascript‘];

array.forEach(a);

//result: (firebug测试结果)

其他参考资料:
http://recurial.com/programming/understanding-callback-functions-in-javascript/
http://www.impressivewebs.com/callback-functions-javascript/

http://zhenghaoju700.blog.163.com/blog/static/135859518201281072518533/

【JavaScript】JavaScript回调函数

时间: 2024-10-13 15:22:50

【JavaScript】JavaScript回调函数的相关文章

告诉你什么是javascript的回调函数

在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply()函数的,或者有一些简短的关于callback的使用示例. 函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.Function对象包含一个字符串,字符串包

Javascript AJAX回调函数传递参数

在Javascript 中,特别是在AJAX中,回调函数常常是一个函数名,没有地方放入参数,如下面的AJAX代码,在成功后将调用回调函数callback,但callback是有参数的,如何把参数传进来呢? var callback = function(p1){ //do something } var ajaxSetting = { url: url, timeout:me.timeout, type: method, contentType: "application/json",

JavaScript中回调函数的使用

在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. 在实际应用中,可以这么应用,一个方法进行获取数据源,另一个方法(回调函数)可以通过数据源在页面上进行展示,可以根据具体的需求进行展示就行,如果多个地方用到这个数据源,可以写不同的回调函数,将此函数传入这个方法中即可. 来,咱们通过实例可以一目了然 获取公司信息的小例子 1.获取公司信息数据源的方法(

Javascript之回调函数(callback)

1.回调函数定义: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数.因此callb

javascript 自定义回调函数

javascript 回调函数 如果你直接在函数a里调用的话,那么这个回调函数就被限制死了.但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数.如果你写成了functiona(){...;b();}就失去了变量的灵活性. function a(index,callback){ callback(index); } function b(index){ alert(index); } a(10000,b);

JavaScript自定义回调函数

背景分析 首先看一段js的代码,主要实现添加的时候首先通过异步请求判断是否存在,如果不存在的话,在进行添加操作: function add(url,data) { var isExited = isExited(data); if(!isExited){ addRequest(url, data); } } 当我添加一个数据的时候,我首先通过判断是否在数据库中存在(当然,如果前后台彻底分离的话,不应该前端进行业务逻辑的判断,前端只应该,用来展示数据),首先,isExited()的请求是ajax请

理解JavaScript中回调函数的使用

首先要理解function 对象,在JavaScript中function和array object,number一样作为一个对象,因此function也可以像普通对象一样可以作为一个参数传递个另一个函数; function parentF(callback){//callback可以任意定义名称,它只是个参数,此时并不能确定callback的类型(是number,object,function都不确定) var a=1; var b=2;  console.log("parent")

javascript之回调函数小知识

Javascript异步编程方法------“回调函数” 这是异步编程最基本的方法. 假定有两个函数f1和f2,后者等待前者的执行结果. f1(); f2(); 如果f1是一个很耗时的任务,可以考虑改写f1,把f2写成f1的回调函数. function f1(callback){setTimeout(function () {// f1的任务代码callback(); }, 1000); } 执行代码就变成下面这样: f1(f2); 采用这种方式,我们把同步操作变成了异步操作,f1不会堵塞程序运

Javascript-回调函数浅谈

回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 中文名 回调函数 外文名 Callback Functions 意思 通过函数指针调用的函数 作用 对特定的事件或条件进行响应 机制 听语音 ⑴定义一个回调函数: ⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者

javascript 的回调函数

既然函数可以像其他数据那样赋值给某个个变量,可以被定义.删除.拷贝,那为什么就不能被当成参数传递给其他函数呢? 下面的示例中,我们定义了一个以两个函数为参数的函数.该函数会分别执行这两个参数函数,并返回它们的返回值之和. function invoke_and_add(a,b){ return a() + b(); } 现在让我们来简单定义一下这两个参与加法运算的函数,它们只是单纯地返回一个硬编码值: function one(){ return 1; } function two(){ ret