js中的this

js中的this是一个指针型变量,它动态指向当前函数的运行环境,它固定不变的,而是根据调用的上下文(执行时环境)改变而改变;

不同使用条件下this 的指向

  • 在全局执行环境中(在任何函数体外部)this都指向全局对象globalThis,(在浏览器中全局对象为window);
  • 在方法中,this 表示该方法所属的对象;
  • 在函数中,this的值取决于函数被调用的方式和模式:
    • 普通函数中:
      • 严格模式下,函数中的thisundefined;
      • 在非严格模式下,this 的默认指向全局对象;
    • 箭头函数中: 箭头函数中没有this,也可以认为箭头函数中的this会继承定义函数时的上下文,可以理解为和外层函数指向同一个this,也就是this指向于函数作用域所处的对象;
    • 构造函数中: 构造函数中的this是指向实例;
  • 在对象中:对象内部方法的this指向调用这些方法的对象,也就是谁调用就指向谁:
    • 函数的定义位置不影响其this指向,this指向只和调用函数的对象有关;
    • 多层嵌套的对象,内部方法的this指向离被调用函数最近的对象;
  • 在原型链中:对于在对象原型链上某处定义的方法,同样的概念也适用。如果该方法存在于一个对象的原型链上,那么 this 指向的是调用这个方法的对象,就像该方法就在这个对象上一样;
  • 在类中:
    • 在类的构造函数中,this是一个常规对象,类的静态方法属于类的自身的属性,类的非静态方法会添加到this的原型中;
    • 派生类中,派生类的构造函数没有初始化this绑定,在构造函数中调用super()会生成一个this绑定,派生类不能在调用super()之前返回,除非其构造函数返回的是一个对象,或者根本没有构造函数;
  • 在事件中,在HTML事件句柄中,this指向了接收事件的HTML元素;

this的使用

  • 获取属性的对象;
  • 获取DOM元素;
  • 在函数体内部,引用当前环境的其他变量;

修改this指向的方法(之前详细写过)

  • call();
  • apply();
  • bind();
posted @   Rain1112022  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示