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就实现了成功的调用;
本文详细解析JavaScript中this的指向问题及如何使用call,apply,bind方法来改变函数内部的this指向,通过具体案例展示了这些方法在解决实际编程问题中的应用。
1813

被折叠的 条评论
为什么被折叠?



