很多同学并不清楚javascript里面的this到底是什么 , 或者理解的不是特别清楚 。 今天给大家总结一下this的用法 。
this机制Javascript的函数里面可以访问一个特殊的“参数”叫做this 。 但这个this , 和很多高级语言(java c# c++)的this是有区别的 。 Javascript的this , 更像是一个额外的参数 , 这个类似于额外的参数 , 更像是函数的第一个参数 。 是你传什么 , 就是什么 。 但其它高级语言的this , 是当前类的实例 。
this使用原则根据上面 , 可以得到了一个结论 , 就是可以在函数里面使用this , 但前提是你要知道这个this是哪个对象 。 如果不清楚 , 就一定要搞清楚 , 切不可乱用 。
如何搞清楚this是谁?函数里面使用的this , 是在此函数调用的时候传递的 。 调用此函数的时候传递this有以下三种方式:
1. 显示传递Function a(arg1 arg2) { ... ...
a.call(\"函数this对象\" arg1 arg2)
进入a函数后 , 使用this , 那么this就是外面传递的对象 , 例如:
a.call(\"hello\" arg1 arg2);
进入a函数后 , 此处的this指的是\"hello\"这个字符串对象 。
a.call({uname: \"hello\" arg1 arg2);
进入a函数后 , 此处的this指的是{uname: \"hello\"对象实例 。
2. 隐式传递this假设现在有一个表对象名为obj , 其中有一个成员为func , 这个成员func可以是函数对象 。 当我们使用obj.func的方式 , 可以访问到这个成员函数 。 而当我们以obj.func(arg1 arg2)进行成员函数调用的时候 , 此时的func函数内部的this对象就是外面的obj对象 。 这个也是最常用的成员函数调用方式之一 。
3. 强制绑定this与强制绑定的陷阱强制绑定是对一个函数的this进行强制指定 , 这样当函数被调用时 , 函数内部访问到的this对象为预先指定的绑定对象 。 例如:
var a = function(arg1 arg2) {.bind(\"hello\");
这样当进入到a函数时 , this对象则为\"hello\" 。 强制绑定具有最高的优先级 , 即若有强制绑定的this对象 , 则显示和隐式指定的this不起效 。
另外看如下代码:
var a = function() { ;
var b = a.bind(“对象”);
那么此处的a和b是不是同一个函数对象呢?可以写代码验证一下 。
this的绑定的用途有一种比较常见的方式 , 就是把一个对象的成员函数转换成一个普通函数 , 这时候bind就派上用场了 。 例如现有一个实体对象entity , 其中有一个成员函数update 。 如果我们需要在定时器中每隔100ms来调用这个函数 , 那么可以按如下方式实现:
【Python|Javascript中的this】setTimeout(entity.update.bind(entity) 100);
- javascript|企业如何防止源码泄露?分享一种源代码管理方法,以JavaScript项目为例
- javascript|中兴Axon 40 系列5月9日发布,采用全新屏下摄像技术,真全面屏!
- Python|过河拆桥?美方认清台积电“小算盘”,外媒:如今计划撇开台积电
- javascript|37岁中国码农创立的SHEIN凭什么能顶2个拼多多?
- 软件|Java:理解Java中的Callable接口和Future接口
- |小屏手机中的香饽饽,67W秒充+5000万像素,比iPhoneSE3差哪了?
- Python|最强显卡易主:AMD新旗舰跑分超高,性能超越RTX 3090 Ti
- excel|Excel中的3大类统计问题,你肯定遇到过,解决办法都在此文
- Python|闪存控制器大厂慧荣科技欲出售,联发科与MaxLinear或将竞购
- javascript|Web前端:2022年最好的JavaScript框架是什么?