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

相关文章
|
5月前
|
编译器 C++
C++类与对象 - 2(构造函数和析构函数)(超详细)
C++类与对象 - 2(构造函数和析构函数)(超详细)
36 0
|
8月前
|
Java
属性与this关键字
属性与this关键字
27 0
|
5月前
super关键字
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种 1.在本类的成员方法中,访问本类的成员变量。 2.在本类的成员方法中,访问本类的另一个成员方法。 3.在本类的构造方法中,访问本类的另一个构造方法。 在第三种用法当中要注意: A.this(...)调用也必须是构造方法的第一个语句,唯一一个。 B.super和this两种构造调用,不能同时使用。
24 0
|
9月前
|
Java 编译器
构造函数中为什么要用this关键字?
构造函数中为什么要用this关键字?
46 0
|
10月前
|
编译器
Super关键字详解
Super关键字详解
50 0
|
11月前
this关键字的使用注意
this关键字的使用注意
|
编译器 C++
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
135 0
C++类和对象【2】—— 对象特性(构造函数、析构函数、拷贝构造函数、深浅拷贝、初始化列表、类对象作为成员类、静态成员变量及静态成员函数等。)
|
自然语言处理 JavaScript 前端开发
浅谈一下this关键字
浅谈一下this关键字
64 0
浅谈一下this关键字
|
存储 设计模式 安全
如何理解子类对象赋值给父类(深入理解动态绑定、静态绑定)
如何理解子类对象赋值给父类(深入理解动态绑定、静态绑定)
如何理解子类对象赋值给父类(深入理解动态绑定、静态绑定)
|
Android开发
构造函数与初始化块
构造函数与初始化块
119 0