this关键字做了什么及使用场景?

本文探讨了JavaScript中this关键字的作用,包括全局环境、函数、对象方法、DOM事件、构造函数、new操作符和箭头函数等不同场景下this的指向。同时,介绍了this在面试题中的常见应用,强调this的动态性和与运行环境的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this关键字做了什么?

1.全局环境输出this,指向谁?    方法中的this,指向调用方法的对象

2.全局函数输出this,指向谁?    全局环境下指向全局对象

3.对象的方法输出this,指向谁?全局函数中的this,指向全局对象。内部函数中的this,指向全局对象

4.DOM事件输出this。指向谁?  事件中的this,指向触发事件的DOM对象

5.构造函数中的this,指向谁?   构造函数中的this,指向new创建的对象【面试题new的作用】

6.new关键字做了什么?             箭头函数中的this,指向定义函数上下文的this。

7.箭头函数中this,指向谁?       使用闭包,var获取dom的索引。

使用场景

  // 1、直接输出this指向全局对象
  console.log(this);//输出window,script标签里面属于全局环境直接输出this指向window
// 2、放置、全局函数输出this指向全局对象
function fun() {
  console.log(this);//输出window
}
// window.fun()
fun()//缩写
// 3、this放在方法中,this指向调用这个方法的对象
let dog = {
  name: "旺旺",
  sayName() {
    console.log("我是" + this.name);//输出我是旺旺

  }
}
dog.sayName()
// 4、指向触发事件的DOM对象
const btn = document.querySelector("button");
btn.onclick = function () {
  console.log(this);
}
//5、构造函数、通常首字母大写。
function F() {
  console.log("我是构造函数");//输出我是构造函数
}
F()
// 6、加一个 new 用来创建对象
//new 关键字做了什么:new 会创建一个对象,将构造函数this指向创建出来的对象
function F() {
  // console.log("我是构造函数");
  this.name = "小明"//此时this指向小f
}
let f = new F()//加一个 new 用来创建对象
console.log(f);
//7、箭头函数三个说法
/*
  1.普通函数,谁调用指向谁。箭头函数,在哪里定义指向谁。
  2.箭头函数外指向谁就指向谁。//清爽
  3.箭头函数中没有this
*/
// 普通函数
let dog1 = {
  name: "旺旺",
  sayName() {
    setTimeout(function () {
      console.log(this);//输出window,计时器是一个全局的函数
    }, 1000)
  }
}
dog.sayName()

//箭头函数
let dog2 = {
  name: "旺旺",
  sayName() {
    setTimeout(() => {
      console.log(this);//输出旺旺
    }, 1000)
  }
}
dog.sayName()

总结

this是什么

this就是指当前函数的运行环境。由于js支持运行环境的动态切换,所以this的指向是动态的,所谓的运行环境其实就是对象。可以理解成,this函数运行时所在的那个对象

this指向

this作为普通函数调用 =>返回window、作为对象方法调用=>      返回对象本身、在class方法中调用=>     返回当前实例本身、使用call、apply、bind调用 =>传什么绑定什么(扩展:call、apply、bind具体指向及使用场景)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端-JC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值