javascript中This的几种赋值情况

首先注意一点: this取什么值是再函数执行的时候被确定的,不是再定义的时候被确定的【非常重要】

 

下面是5种赋值情况,大家可以再自己电脑上写一写打印出来看看

 

1.作为普通函数被调用

function fn(){

 console.log(this)   // window

}

 fn()   // window

 

2.使用call apply bind 被调用

fn1.call({x:100}) // this是{x:100} 调用的对象

const fn2 = fn1.bind( {x:200})

fn2() // this 是 {x:200} 调用的对象

 

3.作为对象方法被调用

const zhangsan = {

  name:'张三',

  sayHi(){

    console.log(this) // this是zhangsan这个对象,因为是zhangsan.sayHi()被执行

  },

  wait(){

    setTimeout(function(){

      console.log(window) //this===window 因为setTimeOut之后当这个方法被执行时候,就是再window下面执行的

    })

  },

  waitAgain(){

    setTimeOut(()=>{

      console.log(this) // zhangsan 箭头函数的this指向上级作用域的this

    })

   }

}

 

4.再class方法中被调用

class People{

  constructor(){

    this.name = name; // this 创建的实例

    this.age = 20;

  }

  sayHi(){ console.log(this) } // this就是zhangsan这个实例

}

const zhangsan = new People('zhangsan')

zhangsan.sayHi() // zhangsan对象

 

5.箭头函数

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值