如何正确判断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
相关文章推荐
- 如何解决attachEvent函数时,this指向被绑定的元素的问题?
- 如何解决attachEvent函数时,this指向被绑定的元素的问题?
- js如何判断函数或者方法中的this指向谁?四句话
- 如何理解JS中的this指向问题
- form下载文件,指向iframe ,如何判断iframe加载完成 form.submit之后的事件问题 监听form表单下载文件是否完成
- js中this的指向问题
- js中this指向问题
- javascript This指向问题简述
- 谈谈setTimeout的作用域以及this的指向问题
- 详解JavaScript中this的指向问题
- 如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
- setInterval和setTimeout函数中This的指向问题
- JavaScript 的 this 指向问题深度解析
- ES6箭头函数内this指向问题
- js 深入理解this指向问题
- ES6---箭头函数与function定义函数有什么区别?在箭头函数中,this指向,构造函数,变量提升是如何表现的?
- JavaScript中this的指向问题
- JS中this的指向问题(全)
- Android如何判断当前网络状态与getAllNetworkInfo()方法失效问题
- 工作问题积累(十一)如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题