this指向&改变this指向

this指向

常见的this指向:
常见的this指向
全局下的this指向window
函数中的this,谁调用指向谁
构造函数中的this指向构造函数的对象
对象中的this默认指向当前对象
事件处理函数中this谁触发指向谁 (指向触发事件的目标元素)
定时器函数, this 指向 window
箭头函数中没有this,但是箭头函数中出现this就去父域中找父域this指向谁就指谁
函数预编译过程中,this指向window
区分this使用时指向问题:
  - 第一步:看this在哪里
      全局this指向window
      
  - 第二步:区分在什么函数中
      箭头函数中:this是找上一层作用域的this【你指向谁我就指向谁】
      function函数:1)事件处理函数:this指向触发事件的对象
                    2)构造函数:this指向构造函数创建的对象
                    
  - 第三步:看是否有 bind()  call()  apply()
    - 有 ---->  this指向参数一对象
    - 无 ---->  谁调用指向谁

 注意:this.xxx = nnn  可能是重新赋值 或 添加属性

改变this指向

语法:method.apply() 、 method.call() 、method.bind()()

(一)call() 改变this指向:

当一个对象需要调用其他对象的函数时,可以通过 fun.call() 实现,fun是方法名。

call(参数一,参数二,、、、):
     参数一:表示函数的拥有者,让谁调用函数
     从第二个参数开始,依次是调用函数时需要传递的参数

(二)apply() 改变this指向:

与 call() 用法相似,区别是参数传递方式不同

call(参数一,[参数二]):
     参数一:表示函数的拥有者
     参数二:是一个数组,把需要传递的参数放入数组中

(三) bind() 改变this指向:

fun.bind() 会创建一个新的函数,新的函数和原函数功能相同
   新的函数和原函数区别: 两个方法中的 this 指向不同,bind() 方法通过第一个参数指定了函数调用者(this的指向)

bind(参数一,参数二,、、、):
     参数一:bind() 第一个参数传递谁,this指向谁
     从第二个参数开始,是调用方法所需要的参数

bind() call() apply() 区别:

区别
相同点: 都是【函数对象】中属性,改变【函数中】this指向
                不同点: bind() : 【返回】被改变this的【函数】,手动执行(bind的返回值)         call()、apply() :无返回值,自动触发函数。
                 call()、apply() 区别: apply 有两个参数,参二是数组;                      call 有N个参数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值