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

相关文章
|
19天前
|
JavaScript 前端开发 开发者
创建一个私有变量和私有方法的闭包
【10月更文挑战第26天】可以在JavaScript中创建具有私有变量和私有方法的闭包,实现数据的封装和隐藏,提高代码的可维护性和安全性。不同的方式适用于不同的场景,开发者可以根据具体的需求选择合适的方法来创建闭包。
|
Java
属性与this关键字
属性与this关键字
52 0
|
6月前
|
C++
c++类与对象(五):友元、内部类、临时对象、匿名对象
c++类与对象(五):友元、内部类、临时对象、匿名对象
42 0
|
Java
Java面向对象中 this关键字的详解
Java面向对象中 this关键字的详解
69 0
|
Java 编译器
构造函数中为什么要用this关键字?
构造函数中为什么要用this关键字?
77 0
|
JavaScript 前端开发 Java
构造函数和原型链详解
在典型的OOP语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。
131 0
构造函数和原型链详解
|
自然语言处理 JavaScript 前端开发
浅谈一下this关键字
浅谈一下this关键字
90 0
浅谈一下this关键字
|
存储 编译器 C语言
【三、类中的静态成员】静态成员变量与静态成员函数(static关键字、this指针)
【三、类中的静态成员】静态成员变量与静态成员函数(static关键字、this指针)
155 0
|
Android开发
构造函数与初始化块
构造函数与初始化块
155 0