// 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邀请码,嘿嘿嘿😄。 来自朋友去某信用卡管家的做的一道面试题,用...