javascript中call,apply,bind的详细攻略

本文详细解析JavaScript中this的指向问题及如何使用call,apply,bind方法来改变函数内部的this指向,通过具体案例展示了这些方法在解决实际编程问题中的应用。

call,apply,bind讲解

call,apply和bind是为了解决this的指向问题;
问题复现:
有一个对象–人,我需要获取到这个人的身高;
在这里插入图片描述
通过上面例子,我们可以看到,第一个this–>person;第二个this–>window;所以当我们返回this.height的时候,是找不到person的height属性的;为了解决这个问题;我们可以这样写:
在这里插入图片描述
这样就改变了this的指向问题了;
但是我们经常会把方法提出来,单独写,规范格式
在这里插入图片描述
像这样;那么此时单独调用getH()的话;this就指向了window;
在这里插入图片描述
上图是我们通过call,apply改变this指向的案列;
在这里插入图片描述
bind和call,apply差不多,只不过bind不会立即执行,需要手动执行;
标准语法:

Function.apply(obj,args);
--obj是需要指向的this对象
--args是数组

Function.call(obj,params);
--obj是需要指向的this对象
--params是参数列表

情景实现

需求描述:
男人和女人,结婚后需要生育孩子,但是查出来,女人已经丧失了生育能力,需要借助体外受精进行代孕的方式来获得孩子;
在这里插入图片描述
我们首先看,男人对象何女人对象,有各自的属性和方法;羊对象也有自己的方法;当调用羊的代孕方法时,this是指向undefined的,因为羊没有manUnit这个属性;所以通过call或者apply将this的指向转向man就实现了成功的调用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李卓书

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

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

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

打赏作者

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

抵扣说明:

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

余额充值