当前位置:网站首页>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;
}
文章推荐:
感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。
边栏推荐
猜你喜欢
Kotlin-Flow常用封装类:StateFlow的使用
typescript45-接口之间的兼容性
【Harmony OS】【ARK UI】轻量级数据存储
Talking about GIS Data (6) - Projected Coordinate System
私域流量引流方法?分享购火爆的商业模式,你值得拥有
传统企业如何转型社交电商,泰山众筹的玩法有哪些?
超好用的画图工具推荐
typescript39-class类的可见修饰符
GIS数据漫谈(六)— 投影坐标系统
[Harmony OS] [ArkUI] ets development graphics and animation drawing
随机推荐
Detailed explanation of MOSN reverse channel
社交电商如何做粉丝运营?云平台怎么选择商业模式?
Get the Ip tool class
自组织是管理者和成员的双向奔赴
redis键值出现 xacxedx00x05tx00&的解决方法
Unity2D horizontal board game tutorial 6 - enemy AI and attack animation
在竞争白热化的电商行业,链动2+1为什么还有企业在用
Redis连接不上的报错解决方案汇总
软件开发的最大的区别是什么?
接口和协议
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
js garbage collection mechanism
11.机器学习基础:机器学习的四个分支
Shell conditional statement judgment
WinForm的控件二次开发
2022/08/02 学习笔记 (day22) 多线程
5.回顾简单的神经网络
【Harmony OS】【ArkUI】ets开发 图形与动画绘制
DFS对剪枝的补充
Common lipophilic cell membrane dyes DiO, Dil, DiR, Did spectrograms and experimental procedures