this 指向汇总及 call 、apply、 bind 、箭头

2022-07-25  本文已影响0人  tenro

this的指向汇总:

1、 事件处理函数中指向事件源
2、 构造函数中this指向new出来的是实例对象
3、 函数是类的方法时this是指向调用方法时的对象
4、 非以上情况是指向全局变量window 

call 、apply 、bind 使用分析

fn.call(obj, arg1, arg2, arg3, ...) // obj就是this
fn.apply(obj, [arg1, arg2, arg3, ...])  // obj就是this
fn.bind(obj, arg1, arg2, arg3, ...)()   // obj是this,但是bind返回是一个函数

箭头函数this是指向父级作用域

var name = "全局下的Name";
var obj = {
  name: 'obj的Name';
  objFn: function(){
    console.log(this.name);     // 'obj的Name'
  },
  windowFn: () => {
    console.log(this.name);     // "全局下的Name"
  },
  mixFn: function(){
    console.log(this.name);     // 'obj的Name'
    var printName = () => {
      console.log(this.name)    // 'obj的Name'
    }
    printName();
  }
}
obj.objFn();
obj.windowFn();
obj.mixFn();
上一篇下一篇

猜你喜欢

热点阅读