您的位置:首页 > 其它

如何正确判断this的指向问题

2019-06-28 01:27 99 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xiaoHelloWord/article/details/93929874

如果去用一句话去说明this指向问题,那么既是:谁调用它那么this就指向谁。
但是仅通过这句话,我们很多时候并不能准确判断this指向。因此我们需要一些规则去帮助自己去判断:
浏览器环境:无论是否在严格模式下,在全局执行环境中,this都指向全局对象window;
是否是new绑定:
如果是new绑定,并且构造函数中没有返回function或者是object,那么this指向的这个新对象。
函数是否通过call,apply调用,或者是用了bind绑定,如果是那么this绑定的就是制定的对象。可以归结为显示绑定
function info(){
sonsole.log(this.age)
}
var person={
age:20,
info
}
var age=28;
var info=person.info;
info.call(person); //20
info.apply(person);//20
info.bind(person)();//20

同时我们还需要注意一中特殊情况,如果call,apply或者bind传入的第一个参数值是undefiend或者null,严格模式下this的值为传入的值null/undefiend。非严格模式下,实际应用的默认绑定规则,this指向全局对象。

隐式绑定,函数的调用时在某个对象上处罚的,即调用位置上存在上下文对象。典型的隐式调用为:xxx.fn()
默认绑定,在不能应用其他绑定规则时使用的默认规则,通常是独立函数调用。
箭头函数的情况:
箭头函数没有自己的this,继承外层上下文绑定的this

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: