首页 > 其他分享 >js中的this

js中的this

时间:2023-03-18 15:23:38浏览次数:33  
标签:调用 函数 指向 对象 js 方法 构造函数

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();

标签:调用,函数,指向,对象,js,方法,构造函数
From: https://www.cnblogs.com/rain111/p/17230838.html

相关文章

  • java 加密和json格式化代码 、http url提交
      CloseableHttpClientclient=HttpClients.createDefault();CloseableHttpResponseres=null;JsonObjectjson=null;......
  • 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码
    ToForU为你|在线工具箱|在线json格式化|在线json压缩|在线json转义|工具大全提供json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json,json解析,jso......
  • JS对象赋值会影响原对象解决办法
    JS常见坑:对象赋值会影响原对象现象:直接用=的方式把一个对象赋值给另一个对象,会导致修改新对象时,原对象也发生变化varobj1={'name':'1111'};varobj2=obj1;obj2......
  • jvm jstat -gcutil 参数详解
    jstat-gcutil854410008544进程ID,用jps命令查出1000单位毫秒,每秒读取一次S0survivor0使用百分比S1survivor1使用百分比EEden区使用百分比O老年代使用百分比M......
  • 【开发环境】IntelliJ IDEA 中的 Gradle 工程处理 JSON 字符串
    文章目录​​一、创建Gradle工程​​​​二、导入org.json:json依赖​​​​三、处理JSON字符串​​一、创建Gradle工程在IntelliJIDEA中,选择"菜单栏|Fi......
  • Eggjs 学习笔记 02
    Service层如果把Controller层看作是与客户端交互并接收请求数据然后返回数据的作用,那么Service层则是处理数据、查询数据(包括数据库的查询,第三方服务的调用)、或者......
  • JSON详解转载
    JSON详解阅读目录JSON的两种结构认识JSON字符串在JS中如何使用JSON在.NET中如何使用JSON总结JSON的全称是”JavaScriptObjectNotation”,意思是JavaScript对象表示......
  • AES 简介 以及 C# 和 js 实现【加密知多少系列】
    〇、AES简介AES的全称是AdvancedEncryptionStandard,意思是高级加密标准。它的出现主要是为了取代DES(DataEncryptionStandardDataEncryptionStandard)加密算法的,......
  • json-diff详细设计
    一、简介json-diff是一款强大的,由java编写的json差异发现工具。他可以发现任何结构的json差异,并且将差异信息反馈给用户。gitee:https://gitee.com/codeleep/json-diff......
  • json-diff简单使用
    一、摘要今天推荐的是一款java中,对比两个json-diff对象是否一致的工具包json-diff`。他可以对比任何结构的两个json数据,并且将其中的不一致信息反馈给用户。工具还内置......