前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript this的指向

JavaScript this的指向

作者头像
Nian糕
修改2024-03-16 16:15:12
7720
修改2024-03-16 16:15:12
举报

在 JavaScript 中this取什么值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了,因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境

this作为普通函数,指向window

代码语言:javascript
复制
function fn1() {
  console.log(this)
}
fn1() // window

使用call() apply() bind(),指向第一个参数

代码语言:javascript
复制
fn1.call({x: 100}) // 指向第一个参数 {x: 100}

作为对象方法被调用,指向调用该方法的对象

代码语言:javascript
复制
const niangao = {
  name: '年糕',
  sayHi() {
    // this 即当前对象
    console.log(this)
  },
  wait() {
    setTimeout(function() {
      // this === window
      // setTimeout是作为普通函数去执行,而不是作为niangao.wait()去执行
      console.log(this)
    })
  }
}

在class方法中被调用,指向实例对象

代码语言:javascript
复制
class Food {
  costructor(name) {
    this.name = name
  }
  eat() {
    console.log(this)
  }
}
const niangao = new Food('年糕')
niangao.eat() // Food{}

箭头函数,指向上级作用域的this

代码语言:javascript
复制
const niangao = {
  name: '年糕',
  sayHi() {
    // this 即当前对象
    console.log(this)
  },
  waitAgain() {
    setTimeout(() => {
      // this 即当前对象
      console.log(this)
    })
  }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档