call实现:

思路:可以给新的对象添加一个函数,然后在执行完以后删除。

Function.prototype.myCall = function(context){// 不传入第一个参数,默认为windowvar context = context || window;//给新的对象添加一个函数,this指向一个函数context.fn = this;//arguments为Call里面的参数var args = [...arguments].slice(1);var result = context.fn(...args);delete context.fn;return result;
};
function sayName(){console.log(this.name);
}
var obj = {name:'kimi',age:26,work:'web'
};
sayName.myCall(obj,'age');复制代码

apply实现:

Function.prototype.myApply = 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;
};复制代码

bind:该方法会返回一个函数。

Function.prototype.mybind = function(context){if(typeof this !== 'function'){throw new TypeError('Error')}var _this = this;var args = [...arguments].slice(1);return function F(){if(this instanceof F){return new _this(...args.concat(...arguments));}else{return _this.apply(context,args.concat(...arguments));}}
};复制代码

bind、call、apply相关推荐

  1. Javascript 中 apply、call、bind

    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大 ...

  2. Javascript中的apply、call、bind

    apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...

  3. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站. ...

  4. [转] 深入浅出 妙用Javascript中apply、call、bind

    [From] http://www.admin10000.com/document/6711.html 网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.ca ...

  5. 深入Javascript中apply、call、bind

    最近在看一下node package的源码,发现很多里面都包含了function这个对象的apply.call.bind这三个方法,于是想拿出来再看看.. apply.call 在 javascrip ...

  6. 【优雅代码】深入浅出 妙用Javascript中apply、call、bind

    这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师的一篇文章的一句话: "对我来说,博客首先是一种知识管理工具,其次才是传播工具.我的技术文章,主要用来整理我还不懂 ...

  7. JavaScript -- arguments、apply 、call、bind

    前言 笔记来源:JavaScript 高级程序设计 笔记内容:apply .call.bind 相同点与不同点 运行环境:浏览器环境 arguments ECMAScript 中的参数在内部是用一个数 ...

  8. 手动实现apply、call、bind

    手动实现apply.call.bind 每个Function对象都存在apply().call().bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函 ...

  9. apply()、call()、bind()

    apply().call().bind() 每个Function对象都存在apply().call().bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩 ...

  10. 关键字this、new;apply、call、bind方法的用法

    一.this 1. 定义 引用MDN的说法:当使用在函数中时,this指代当前对象,即调用了函数的对象.如果在一个对象上使用了点或者方括号来访问属性或者方法,这个对象就成了this.如果访问属性或者方 ...

最新文章

  1. 批改网作文提交时分析不出来_小学生作文写作从哪些方面提高呢?
  2. aes c# java_AES加密,C#和java相同
  3. Go案例说明defer panic recover
  4. SAP云平台 CloudFoundry环境下的space guid
  5. 【渝粤教育】广东开放大学 计算机思维 形成性考核 (29)
  6. java学习(76):GUL单选按钮和复选按钮
  7. 如何确定你的伴侣真的爱你?复杂数学公式告诉你
  8. 一步步创建第一个Docker App —— 4. 部署应用
  9. linux时间界面返回,Android开发教程:游戏过程中按Home键后返回游戏界面
  10. 同步异步和阻塞3-同步阻塞
  11. Android App混合开发
  12. python打砖块游戏程序设计报告_打砖块游戏课程设计报告
  13. JavaScript---文件下载处理文件下载失败兼容IE11文件下载
  14. 使用Xposed去除微博国际版的启动广告
  15. IT项目经理沟通技巧的重要性
  16. Linux基础之vim
  17. 为什么大部分企业面试官都会问GMV,GMV是什么?
  18. 一文读懂三种并发控制机制(封锁、时间戳、有效性确认,大量例子+证明)
  19. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】
  20. Python进行远程视频监控

热门文章

  1. HTML有几种发音模式,html – 使用lang属性和拼音发音的正确方法是什么(如果有的话)?...
  2. mybatis 大于小于转义_10 HTML5特性、转义字符和注释
  3. html h 不换行,css 强制不换行
  4. 华为鸿蒙osbeta多场景展示,华为发布鸿蒙系统:全场景分布式OS
  5. linux使用线程实现生产者消费者问题,Linux平台下线程同步,实现“生产者消费者问题”...
  6. 从属关系mysql_关系型数据库基础概念:MySQL系列之开篇
  7. count(*)效率提高_想使用多线程来提高处理速度,却还不知道使用CountDownLatch与CyclicBarries?...
  8. 智能车竞赛技术报告 | 智能车视觉 - 青岛科技大学 - 飞猪
  9. 2021年春季学期-信号与系统-第十一次作业参考答案-第二小题
  10. 有的人撑死,有的人饿死,有的人吓死