6、this关键字

简介: 6、this关键字

1、this关键字


  • 它是一个引用,指向内存中的一个对象


2、对象this的指向


this的指向类型
1、指向调用方法的对象 最常用的一种情况,一个对象调用一个方法,那么方法中的this,指向这个对象
2、指向new创建出来的对象 构造函数中的this,指向new创建出来的对象


  <script>
    // ES5的语法
    // 1、指向调用方法的对象
    let person = {
      name: "jasmine",
      getName() { console.log(this.name); }
    }
    person.getName();   // 输出结果:jasmine
    // 2、指向new创建出来的对象
    function person1(name) {
      this.name = name;
    }
    let person2 = new person1("jasmine");
    console.log(person2.name);    // 输出结果:jasmine
    // ES6的语法
    class Person3 {
      constructor(name) {
        this.name = name;
      }
    }
    let person4 = new Person3("jamsine");
    console.log(person4.name);    // 输出结果:jasmine
  </script>

3、DOM事件this的指向


  • 当DOM事件被触发时,事件监听函数中的this指向触发事件的DOM对象


  <button>按钮</button>
  <script>
    document.querySelector('button').onclick = function () {
      console.log(this);
    }
  </script>

4、全局事件this的指向


// 2、全局函数this指向window
    function fun() { console.log(this); };
    fun();      // 输出结果:Window


5、普通函数与箭头函数this的指向


类型 this指向
普通函数 指向window
箭头函数 指向定义函数的上下文的this


    let person = {
      name: "jasmine",
      getName() { console.log(this.name); },
      getName1() {
        setTimeout(() => {
          // 箭头函数this指向对象
          console.log(`箭头函数:${this}`);
        }, 1000)
      },
      getName2() {
        setTimeout(function () {
          console.log(`普通函数:${this}`);
        }, 1000)
      }
    }
    person.getName();   // 输出结果:jasmine
    person.getName1();    // 输出结果:[object Object]
    person.getName2();    // 输出结果:[object Window]


总结


image.png

相关文章
|
C++
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
442 0
|
运维 监控 Java
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
研发规范第十三讲:阿里 - 如何进行项目稳定性建设
920 1
|
Linux
中断系列第二篇:中断的使用场景?
中断系列第二篇:中断的使用场景?
419 0
|
存储 分布式计算 并行计算
计算存储分离架构
计算存储分离架构
|
7月前
|
数据采集 分布式计算 监控
智能数据建设与治理 Dataphin:阿里云的一站式数据治理利器
阿里云Dataphin是一款企业级数据治理与智能建设平台,专注于解决数据孤岛、质量低下和开发效率低等问题。它提供从数据集成、规范建模、智能开发到质量监控及资产管理的全生命周期解决方案,特别适用于中大型企业构建数据中台或推进数字化转型。Dataphin通过自动化生成代码、内置质量规则模板和全局血缘追踪等功能,显著提升数据开发效率与跨团队协作能力。尽管学习曲线较陡峭且资源消耗较高,但其深度集成阿里云生态的优势,使其成为追求规范化数据治理企业的理想选择。推荐已采用阿里云技术栈并具备一定数据团队规模的企业使用。
472 1
|
中间件 API 数据格式
中间件的工作流程
【6月更文挑战第15天】
339 8
|
8月前
|
算法 数据处理 数据安全/隐私保护
分别通过LS和RML进行模型参数辨识matlab仿真
本程序通过最小二乘法(LS)和递归最大似然估计(RML)进行模型参数辨识,并在MATLAB2022A中仿真。仿真输出包括参数辨识误差及收敛值。程序展示了两种方法的参数估计值及其误差收敛情况,适用于控制系统设计与分析。最小二乘法适合离线批量处理,而RML则适用于实时在线处理。核心代码实现了LS辨识,并绘制了参数估计值和误差变化图。
|
11月前
|
JSON API 数据格式
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
|
存储 设计模式 监控
事件驱动架构的实现方式?
【10月更文挑战第7天】事件驱动架构的实现方式?
271 7
|
安全 网络协议 IDE
使用Python编写网络扫描程序
使用Python编写网络扫描程序
195 0