当前位置:网站首页>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;
}
文章推荐:
感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。
边栏推荐
- 超好用的画图工具推荐
- 2022暑假牛客多校联赛第一场
- VR全景展打造专属元宇宙观展空间
- Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data
- typescript41-class类的私有修饰符
- 三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
- 普乐蛙VR台风体验馆厂家VR防震减灾模拟VR沉浸式体验设备
- Shell之条件语句
- 好消息!北京、珠海PMP考试时间来啦
- 【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
猜你喜欢
typescript47-函数之间的类型兼容性
内部类、static关键字、final
传统企业如何转型社交电商,泰山众筹的玩法有哪些?
Harmony OS ets ArkUI 】 【 】 the development basic page layout and data connection
链动2+1模式简单,奖励结构丰厚,自主裂变?
社交电商:链动2+1模式,为什么能在电商行业生存那么久?
shell script loop statement
Talking about GIS Data (5) - Geographic Coordinate System
IO process thread -> thread -> day5
BIOTIN ALKYNE CAS:773888-45-2价格,供应商
随机推荐
js garbage collection mechanism
2022/08/02 Study Notes (day22) Multithreading
【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability
Redis缓存雪崩、缓存穿透、缓存击穿
Detailed explanation of MOSN reverse channel
Redis连接不上的报错解决方案汇总
在线密码生成工具推荐
User password encryption tool
mysql 创建索引的三种方式
RequestContextHolder
MySQL 删除表数据,重置自增 id 为 0 的两个方式
typescript47-函数之间的类型兼容性
测试人员的价值体现在哪里
typescript46-函数之间的类型兼容性
Secondary development of WinForm controls
如何利用 Flutter 实现炫酷的 3D 卡片和帅气的 360° 展示效果
2022暑假牛客多校联赛第一场
【Harmony OS】【FAQ】Hongmeng Questions Collection 1
接口测试框架实战 | 流程封装与基于加密接口的测试用例设计
「短视频+社交电商」营销模式爆发式发展,带来的好处有什么?