Javascript实现call,bind,apply的代码怎么写
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了Javascript实现call,bind,apply的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Javascript实现call,bin
千家信息网最后更新 2025年11月07日Javascript实现call,bind,apply的代码怎么写
这篇文章主要介绍了Javascript实现call,bind,apply的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Javascript实现call,bind,apply的代码怎么写文章都会有所收获,下面我们一起来看看吧。
1.检查当前调用的是否为函数
2.如果当前没有传入指向的this,则赋值为window
3.将fn指向当前调用的函数
4.获取传入的参数
5.将参数传入fn进行调用
6.将对象上的fn删除
7.返回结果
//普通call的实现 function hello(){ console.log('hello 我是'+this.name); }; let person = { name:'krys' }; var name = 'liang';//只有var的变量属于window hello();// 'hello 我是liang' hello.call(person);//'hello 我是krys' hello.call();//'hello 我是liang' let person2 = { name:'lwl' } Function.prototype.mycall = function(context){ //不传入参数的时候,默认为window if(typeof this !== "function"){ throw new TypeError('Error'); } context = context || window; context.fn = this;//fn就是上面的hello方法 const args = [...arguments].slice(1);//第一个参数不要 const result = context.fn(...args);//把剩下的其他参数传给hello delete context.fn; return result; } hello.mycall(person2);function getParams(){ console.log('我是',this.name,'获取一些参数',...arguments); } let person3 = { name:'hhh' }; getParams.apply(person3,['hello','world']) Function.prototype.myApply = function(context){ if(typeof this !== "function"){ throw new TypeError() } context = context || window; context.fn = this; let result; if(arguments[1]){ //如果有传入参数数组 console.log(arguments[1]) result = context.fn(...arguments[1]); }else{ result = context.fn(); } delete context.fn; return result; } getParams.myApply({name:'llll'},['jjj','kkkk','llll']);function getParams(){ console.log('我是',this.name,'获取一些参数',...arguments); } let person3 = { name:'hhh' }; let person4 = { name:'tttt' }; getParams.bind(person3,'hello','world') getParams.bind(person4,'hello','world')('jjj','kkk'); Function.prototype.myBind = function(context){ if(typeof this !== "function"){ throw new TypeError() } context = context || window; const _that = this; const args = [...arguments].slice(1); return function F(){ if(this instanceof F){ return new _that(...args,...arguments);//这里的arguments是上面的jjj kkk } return _that.apply(context,args.concat(...arguments));//这里的arguments是上面的jjj kkk } } getParams.myBind({name:'llll'},'jjj','kkkk','llll')('hhhhllll');关于"Javascript实现call,bind,apply的代码怎么写"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Javascript实现call,bind,apply的代码怎么写"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
参数
代码
知识
面的
内容
函数
指向
篇文章
普通
价值
变量
只有
对象
就是
操作简单
数组
文章
方法
时候
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深蓝科技与网络安全
淮安计算机网络技术
猥琐流 网络安全
服务器管理口无法连接
腾讯手游喊话软件开发
股票助手软件开发
web服务器漏洞自动检测系统
十四五网络安全规划目标
玉环铭威网络技术有限公司
软件开发工程师前端职业规划
网络安全课工作汇报
阿里云服务器服务电话
昆明市教育台网络安全
java监控数据库连接
工商局软件开发需求规范
直播app的服务器搭建
软件开发企业怎样归集成本
江苏好服务器代理厂家
滦南项目网络技术诚信合作
亿速云香港服务器
四川前端软件开发大概要多少钱
阿里云数据库技术架构
新天堂2服务器修改
计算机网络技术轨道方向
大学黑板报网络安全靠大家
华为软件开发入职培训计划
金蝶服务器管理用户
微软服务器200美元虚拟信用卡
普陀区品牌软件开发销售
ST558服务器管理口