call,apply,bind

本文介绍了JavaScript中的call, apply, bind三个方法,它们都用于改变函数内部的this指向。call接受参数直接传入,apply以数组形式传参,bind则返回新函数不立即执行。此外,还提到了使用that变量固定this指向的另一种方式。
摘要由CSDN通过智能技术生成
  •   call,apply,bind三个方法其实都是继承自Function.prototype中的,属于实例方法,它们的作用都是改变函数运行时的this指向,普通的对象,函数,数组都继承了Function.prototype中的三个方法,所以这三个方法都可以在对象,函数,数组中使用
  •    **call()**方法可以传递两个参数,第一个参数用于指定该函数内部的this指向(也就是函数执行时所在的作用域),第二个是函数调用时所要传的参。
  •    **apply()**方法的作用与call方法类似,也是改变this指向(函数执行时所在的作用域),然后在指定的作用域中,调用该函数。同时也会立即执行该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数。
  •    **bind()**方法用于指定函数内部的this指向(执行时所在的作用域),然后返回一个新函数。bind方法并非立即执行一个函数

总结:
  1. 第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。

  2. 都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。

  3. call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。有点闭包的味道。

  4. 改变this对象的指向问题不仅有call,apply,bind方法,也可以使用that变量来固定this的指向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值