apply,call,blind 方法总结

apply()方法

1.作用:apply()方法调用一个函数 ,可以改变函数的this指向
2.语法规范:fun.apply(thisArg,[argsArray])
3.参数:
(1)thisArg:在fun函数运行时指定的this值
(2)argsArray:传递的值,必须包含在数组里面
(3)返回值就是函数的返回值
4.主要应用: 可以利用apply借助数学内置对象求最大值
测试代码:

bind()方法

1.作用:bind()方法不会调用函数,但是能改变函数内部this指向
2.语法规范:fun.bind(thisArg,arg1,arg2,…)
3.参数:
(1)thisArg:在fun函数运行时指定的this的值
(2)arg1,arg2:传递的其他参数
(3)返回有指定的this值和初始化参数改造的原函数拷贝【产生一个新的函数】
4.主要应用:如果有的函数不需要立即调用但是又想改变这个内部函数的this指向此时用bind方法

小案例 首先点击按钮后按钮被禁用,然后3秒后可以使用
思路:首先获取按钮元素,然后给按钮元素添加点击事件,给disabled设置true属性
然后设置定时器3秒,并给定时器函数添加bind事件

<script>
  var btn=document.querySelector('button')
//   给按钮添加点击事件
 btn.addEventListener('click',function(){
     this.disabled=true;//这里的this指向window
     setTimeout(function(){
        this.disabled=false//这里的this指向window
     }.bind(this),3000)//这里的this指向btn
 })
    </script>

call,apply,bind总结

1.相同点:全部可以改变函数内部的this的指向
2.区别点:
(1)call 和apply会调用函数,并且改变函数的内部this指向
(2)bind不会调用函数,但是改变可以this的指向
(3)call和apply传递的参数不一样,call传递参数arg1,arg2…而apply传递的函数是数组形式
3.主要应用场景
(1)call经常做继承
(2)apply经常跟数组有关系,比如借助数学对象实现最大值最小值
(3)bind不会调用函数,但是会改变this指向,比如定时器内部的this指向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值