// func.geCall(obj, 'arg1', 'arg2')
Function.prototype.geCall = function (context) {
var context = context || window
// 给 context 添加一个函数
context.fn = this
// 将 context 后面的参数取出来
var args = [...arguments].slice(1)
var result = context.fn(...args)
// 删除 fn
delete context.fn
return result
}
// func.geApply(obj, ['arg1', 'arg2'])
Function.prototype.geApply = function (context) {
var context = context || window
context.fn = this
var result
if (arguments[1]) {
result = context.fn(...arguments[1])
} else {
result = context.fn()
}
delete context.fn
return result
}
Function.prototype.geBind = function(context){
let _this = this
let args = [...arguments].slice(1)
const fn = function() {
return _this.apply(context, [...args, ...arguments])
}
return fn
}
call/apply/bind
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- call 和apply一直在项目中使用,但是一直不知道是怎么实现,今天实现了一下 call和apply的用法 ca...
- 背景: 之前今日头条的面试题,有一道题是自己实现一个bind方法,有同学由于考虑的情况不够完全,结果崩了。今天在群...
- 通过call和apply的模拟实现,带你揭开call和apply改变this的真相 call一句话介绍 call:...
- 使用模拟实现的方式探究call 和 apply 的原理 call 作用: call() 方法就是在使用一个指定 t...
- 本文首发我的个人博客:前端小密圈,评论交流送1024邀请码,嘿嘿嘿😄。 来自朋友去某信用卡管家的做的一道面试题,用...