最详细的JS学习笔记(连载)第二章、函数(回调函数)

8、回调函数

回调就是一个函数的调用过程。

函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。这个过程叫回调

函数a的事先干完,回头再调用函数b。这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数

apply()函数有两个参数:

第一个参数是上下文,

第二个参数是参数组成的数组。如果上下文是null,则使用全局对象代替。

例如:function.apply(this,[1,2,3])

call()的第一个参数是上下文,后续是实例传入的参数序列,例如:function.call(this,1,2,3);

  • call()个方法;

语法: call([thisObj[,arg1[, arg2[, [,.argN]]]]])

参数

thisObj              可选项。将被用作当前对象的对象。

arg1, arg2, , argN       可选项。将被传递方法参数序列。

说明

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj指定的新对象。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

上面的一堆我们用代码来简单梳理下:

function person(){

    var name = 'wyang';

    var age = 26;

    console.log(name+','+age);

}

function one(){

    var name = 'wangyang';

    var age = 27;

    console.log(name+','+age);

}

person.call(one);    //wyang,26

上面的例子是person把one替换掉了。所以输出的就是wyang和26;

下面我们用call方法做一个继承的例子。

function person(){

    this.name = 'wyang';

    this.age = 26;

}

function one(){

    person.call(this);

    console.log(this.name);

}

one();    //wyang,age

上面例子person本身作为对象定义一个值为wyang的属性name;然后在one函数里通过call方法把person的属性继承给自己。调用one函数输出wyang;

二、通过call方法实现的回调函数

function  person(callback){

    console.log(name);

    callback.call(this);

}

function one(){

    var name = 'wyang';

    console.log(name);

}

person(one);    //wyang;wyang

上面例子中的person定义一个形参为callback;
通过call方法把形参callback替换掉自己;
函数one中命名一个变量name并设定值为wyang;
然后调用person函数,并把one函数作为参数传进去。
可以看到输出两次wyang;这说明在函数person里面接收到了one函数里面的name变量的值;
而one函数作为参数在person函数内通过call方法把person替换掉,在调用person函数的时候,one函数也被成功调用,然后成功输出;

三、通过普通方式的回调

function  person(callback){

    console.log(name);

    callback();

}

function one(){

    var name = 'wyang';

    console.log(name);

}

person(one);    //wyang;wyang

上面例子中我们把call方法去掉,直接在函数person内部调用参数callback;
然后把one函数作为参数传递进去;

需要注意的是:javascript中的函数是对象,one作为一个函数名是对Function对象的引用,所以在person函数内部调用callback参数时,要加'()';不然传递的只是一个函数名而已,并不是函数对象本身;


本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记。有不正确之处请各位高手多多指点,一起学习进步。【VX:czlingyun    暗号:CSDN】

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵韵设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值