this指向语法 及强行改变this指向call apply bind

this指向

一个使用在作用域内的关键字
在全局使用,指向window
在函数内使用,this指向函数的context(执行上下文)
  函数内的this,和函数如何定义没有关系,和函数在哪定义没有关系,只看函数是如何被调用的

几种调用方式,决定了this指向

1 普通调用
 函数名()
 该函数内的this指向window
 
2 对象调用
 对象名.函数名() 
 对象名['函数名']()
 数组[索引]()
 this指向 点. 前面的内容,也就是该对象或数组
3 定时器处理函数
 setTimeout()
 setintervel()
 this指向window
4 事件处理函数
  事件源.on事件类型=事件处理函数
  事件源.addEventListener('事件类型',事件处理函数)
  this指向事件源
5 自执行函数
  this指向window
6 箭头函数
  this指向上下文
7 构造函数相关的 this
 1. 构造函数体内的 this
   因为和 new 关键字连用, 所以指向了 当前实例
 2. 构造函数 prototype 中方法里面的 this
   原型上的方法因为是被 当前实例 调用的
   this 指向了 当前实例
强行改变this指向 call apply bind
1 call 跟随函数名后面调用
 函数名.call() 对象名.函数名.call()等等
 修改函数内的this指向
 
 参数:
 第一个参数,函数内的this指向,写什么就指向什么
 第二个参数开始,依次给函数传递实参
 特点:立即调用
2 apply 跟随在函数名后面调用
 函数名.apply()
 对象名.函数名.apply()等等
 修改函数内的this指向
 
 参数:
 第一个参数:函数内的this指向
 第二个参数:是一个数组或伪数组,里面的每一项依次给函数传递实参
 特点:立即调用函数
 
 事件处理函数,定时器函数,一般不会使用这个方法
 特殊作用:改变给函数传递参数的方式
3 bind 跟随函数名后面调用
 函数名.bind()
 对象名.函数名.bind()
 意义:修改函数内的this指向
 
 参数:
 第一个参数:函数内的this指向
 第二个参数开始:依次给函数传递实参
 
 特点:
 不会立即调用函数,返回一个改变了this指向新的函数
 特殊作用:改变一些不会立即执行的函数内的this指向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值