模拟一个bind

这篇博客详细介绍了JavaScript中bind、call和apply的使用,它们都能改变函数的this指向,并接受传参。call和apply会立即执行函数,而bind返回一个新函数供后续调用。在模拟实现bind时,重点在于如何保存原函数和指定的this上下文,以便在新函数被调用时正确执行。
摘要由CSDN通过智能技术生成

首先清楚bind ,apply 和call的异同点

 

1,三者可以改变函数的this指向

2,都接受传参且接受的第一个参数都是this要指向的对象

不同点:

call和apply是立即执行的。但是bind返回的是一个函数

例如

let a = {

name:"张三",

age:23,

hi:function(a,b){

console.log(this.name+this.age)

}

}

var b = {

name:李四,

age:34

}

a.hi()张三23

a.hi.bind(b) ("王五","37)   //李四34 这里bind返回的是一个函数需要再次调用  bind在调用的()里直接添加参数

a.hi.apply(b,["王五","37])apply 里面的第二个参数是一个数组

a.hi.call(b,"王五","37")   call后面的第二个参数和hi()函数里面的是一一对应的

了解以上信息,模拟一个bind绑定

请先了解  Array.prototype.call和slice的用法

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值