今日长缨在手,何时缚住苍龙。这篇文章主要讲述自定义call和applybind方法相关的知识,希望能为你提供帮助。
call和apply本质上是实现函数调用,即改变this的指向
一、手动实现call方法
Function.prototype.call2=function(object){
let obj =object;
obj.fn = this;
let result;
let args = [...argements].splice(1);
return result =obj.fn(...args)
}
二、重写apply方法
Function.prototype.call2=function(object){
let obj =object;
obj.fn = this;
let result;
let args = [...argements].splice(1);
return result =obj.bn(args)
}
三、手动实现bind方法
【自定义call和applybind方法】Function.prototype.myBind = function(obj,...arg1){//arg1收集剩余参数
returnfunction (...arg2) {//返回箭头函数, this绑定调用这个方法(myFind)的函数对象
return this.Apply( obj, arg1.concat(arg2) );
// 将参数合并
}
}
推荐阅读
- uni-app快速入门(转)
- 使用MyBatis的mapper接口(动态代理对象)调用时的注意点
- git,es的基本查询,组合查询,mapping映射,i分词,term和match
- [Blazor] - 关于 "HTTP Error 500.38 - ANCM Application DLL Not Found" 的调整及相关资料
- 理解并测试什么是Android事件分发
- multipart/form-data和application/x-www-form-urlencoded的区别
- Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting
- NetCore+Dapper WebApi架构搭建(仓储的依赖注入)
- Android应用的persistent属性