美文网首页
JS class中函数this指向问题

JS class中函数this指向问题

作者: tysnd | 来源:发表于2022-03-08 12:54 被阅读0次

示例

let a = {
    name: 'A',
    hehe: function () {
        let f1 = function () {
            console.log('f1', this)
        }
        let f2 = () => {
            console.log('f2', this)
        }
        f1()
        f2()
    }
}
a.hehe()
// 输出结果
// f1 window对象
// f2 a对象


class A {
    constructor () {
        this.name = 'A'
    }
    hehe () {
        let f1 = function () {
            console.log('f1', this)
        }
        let f2 = () => {
            console.log('f2', this)
        }
        f1()
        f2()
    }
}
let a = new A()
a.hehe()
// 输出结果
// f1 undefined
// f2 a对象

对于f2,由于是箭头函数,this相当于普通变量,本身没有时向父级作用域获取,因此获取到对象a

对于f1,结果确实应该是undefined,但由于代码并未采用严格模式,因此输出的应当是window对象。经查阅MDN(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes),class中默认采用严格模式,因此即使我不显示地声明严格模式,f1中仍会输出undefined

严格模式

类声明和类表达式的主体都执行在严格模式下。比如,构造函数,静态方法,原型方法,getter和setter都在严格模式下执行。

相关文章

  • JS class中函数this指向问题

    示例 对于f2,由于是箭头函数,this相当于普通变量,本身没有时向父级作用域获取,因此获取到对象a 对于f1,结...

  • 关于js函数中this的指向的问题

    @(javascript)[JavaScript中this的指向] 关于js函数中this的指向的问题 javas...

  • js中的this

    目标:js中this的指向? 问题的引出 指出this指向什么 js中函数的三种调用形式 func(p1, p2)...

  • 前端JS进阶二(ES6-Class语法)

    Class和普通构造函数有何区别 前端会使用ES6中的Class来代替JS中的构造函数 JS 构造函数 Class...

  • this

    this在js中主要研究的是函数中的this,不代表函数外没有this,函数外的this指向window js中的...

  • js中的this,箭头函数的this,以及call()和bind

    js中的this问题 js中的this有点时候很迷,不同的时候this会指向不同的对象。1.函数的this:通常情...

  • JS--this指向问题

    JS--this指向问题 1.function中的this在不同环境下的指向 事件调用环境:谁触发的事件,函数里面...

  • 关于面向对象中this指向问题

    this指向 今天就和大家来探讨一下在js面向对象中的这个this的指向问题, 一般来讲在函数中this的指向是当...

  • JS中函数内的this指向问题

    函数中的this指向通常是根据谁调用了该函数决定的 01、普通函数 普通函数中的this指向window。 02、...

  • JavaScript中this使用

    JS中this指向 this在全局作用于下指向window 函数中使用的this指向: 函数在调用时,JavaSc...

网友评论

      本文标题:JS class中函数this指向问题

      本文链接:https://www.haomeiwen.com/subject/cldarrtx.html