当前位置:网站首页>js实现一个 bind 函数
js实现一个 bind 函数
2022-08-03 04:55:00 【船长在船上】
欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。

目录
原理:通过 apply 或者 call 方法来实现
区别:function.apply(obj,argArray)//argArray为数组
function.call(obj,arg1,arg2,arg3…)//后面的参数为列表项
apply()和call()不传参数时候功能是相同的,但是它们接受的参数不同,apply的第二个参数只能接受一个数组,并且apply()只能是二个参数,而call()的第二个参数起接受的多个参数列表项,参数是可以多个。
(1)初始版本
Function.prototype.bind=function(obj,arg){
var arg=Array.prototype.slice.call(arguments,1);
var context=this;
return function(newArg){
arg=arg.concat(Array.prototype.slice.call(newArg));
return context.apply(obj,arg);
}
}(2) 原型链
Function.prototype.bind=function(obj,arg){
var arg=Array.prototype.slice.call(arguments,1);
var context=this; var bound=function(newArg){
arg=arg.concat(Array.prototype.slice.call(newArg));
return context.apply(obj,arg);
}
var F=function(){}
//这里需要一个寄生组合继承
F.prototype=context.prototype;
bound.prototype=new F();
return bound;
}文章推荐:
感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。
边栏推荐
猜你喜欢
随机推荐
软件开发的最大的区别是什么?
【Harmony OS】【ARK UI】ets使用startAbility或startAbilityForResult方式调起Ability
接口测试实战| GET/POST 请求区别详解
【Biotin Azide|cas:908007-17-0】Price_Manufacturer
移动流量的爆发式增长,社交电商如何选择商业模式
Coordinate knowledge in digital twin campus scenarios
Kotlin-Flow常用封装类:StateFlow的使用
Alienware上线首个数字时装AR试穿体验
Create a tree structure
Where is the value of testers
接口测试框架实战(三)| JSON 请求与响应断言
CAD有生僻字如何打出来、如何提交软件相关问题或建议?
Technology Sharing | How to do assertion verification for xml format in interface automation testing?
[Fine talk] Using native js to implement todolist
【生物素叠氮化物|cas:908007-17-0】价格_厂家
Windows 安装PostgreSQL
typescript39-class类的可见修饰符
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
数字孪生园区场景中的坐标知识
Jmeter 模拟多用户登录的两种方法








