this的指向

133 阅读1分钟

js中this 的指向大致可以分为以下四个场景

  1. 在对象的方法中使用,this指向当前的对象
var obj = {
    a: "hhh",
    test() {
        return this.a;
    }
}
console.log(obj.test());//'hhh'
  1. 在独立的函数中使用

    在严格模式下,this指向undefined;

    非严格模式下,this指向全局对象,比如window;

var a = "jjj"
var obj = {
    a: "hhh",
    test() {
        return this.a;
    }
}
const test = obj.test;
console.log(test());//"jjj"
  1. 通过call\apply\bind来指定

    三者都可传入一个要改变的this的值,来改变this指向,

    区别就是call\apply改变的同时执行函数,bind不执行,而是返回这个函数

    call\apply 第一个参数就是要改变的this的值,区别就是call传入的是参数列表,apply传入的是参数数组

  2. 构造函数

    如果一个函数是构造函数,那么this就指向它实例化出来的对象

  3. 箭头函数

    箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this,

    另外箭头函数里也不能使用call\apply\bind修改this的指向

参考:

juejin.cn/post/684490…