call() ,bind(), applay()调用

本文详细介绍了JavaScript中call、apply和bind方法用于改变函数中this指向的用法。call和apply主要区别在于参数传递方式,call接收多个参数,apply则需以数组形式传递。bind则返回一个新的函数,需要调用才能执行,同样支持多种参数传递。在非严格模式下,未指定this时默认指向window,在严格模式下则为undefined。通过实例演示了三种方法的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

call,bind,applay都是更改this指向的

call的使用:

call在使用时直接是obj.call(this,'arg1','arg2') 不用使用“()”调用

call的传参(this, 'arg1','arg2') 直接放在后面即可

apply的使用:

apply在使用时直接是obj.apply(this,'arg1','arg2') 不用使用“()”调用

apply的传参(this, ['arg1','arg2']) 除this指向外,其余需要放在数组里传入

bind的使用:

bind在使用时直接是obj.bind(this,'arg1','arg2') 需要使用“()”调用 obj.bind(this,')() 因为bind返回的是一个新函数,需要()进行调用;

bind 的传参(this, 'arg1','arg2') 直接放在后面即可

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:

call: 返回参数不是新函数, 不用() 调用,传参不用数组包装

apply: 返回参数不是新函数,不用() 调用,传参需要数组包装

bind:返回参数是新函数, 需要() 调用,传参不用数组包装

参数可传对象,字符串,等等
非严格模式:

如果不传参数,或者第一个参数是null或nudefined,this都指向window

严格模式:"use strict"

如果不传参数,或者第一个参数是null或nudefined,this都指向undefined

***

实例

***


在这里插入图片描述
obj.myFun.call(db,‘成都’,‘上海’);     // 德玛 年龄 99 来自 成都去往上海
obj.myFun.apply(db,[‘成都’,‘上海’]); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,‘成都’,‘上海’)(); // 德玛 年龄 99 来自 成都去往上海
obj.myFun.bind(db,[‘成都’,‘上海’])();   // 德玛 年龄 99 来自 成都, 上海去往 undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值