你可能需要知道的前端小知识——JavaScript的thisValue

272 阅读1分钟
  • 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

  • 想写一点关于执行上下文的内容,但是不知道怎么下笔,就用this来抛砖引玉吧。

this

  • this在最新的标准已经划分到了词法环境。
  • this是执行上下文的一个很重要的部分,在不同的函数中,this值不同。

普通函数

  • 在普通函数中使用this的时候,this的值取决于当前在使用this时的引用。

    • 如果在获取this值的时候,没有任何的引用。
    console.log(this)
    

    此时,打印出来的值就是全局的this值。如果是在浏览器里,那就是Windowimage.png

    • 如果在一个对象的方法里,打印this
    let t = {
        getThisValue: function() {
            console.log(this)
        }
    }
    t.getThisValue()
    

    此时,打印出来的值就是对象本身的引用。 image.png

    • 其他的普通函数中类似,this值都是在使用this值时的引用。

箭头函数

  • 箭头函数与普通函数的不同在于:
    • 不绑定this
  • 因此在箭头函数中,不论什么引用打印this值,都是全局的this值。可以说在所有的箭头函数中使用this值都是一样的,都是全局的this值。
  • addition:因为不绑定this,所以没有prototype属性,不能用作构造器,使用call()apply()bind()方法调用函数的时候,只能传递参数。

严格模式

  • 严格模式中如果没有被指定this,那么this的值就是undefined
  • additionclass语法糖,已经声明当前是严格模式。

总结

  • 本文主要介绍了this值,之后会以此为切入点,介绍一些执行上下文、切换上下文的内容。
  • 欢迎留言评论。