博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟实现apply、call、bind
阅读量:6226 次
发布时间:2019-06-21

本文共 786 字,大约阅读时间需要 2 分钟。

1、call

Function.prototype.myCall = function (context) {    var c = context || window    var args = Array.from(arguments).slice(1)        c.___fn = this    var result = c.___fn(...args)    delete c.___fn    return result  }复制代码

2、apply

Function.prototype.myApply = function (context) {    var c = context || window    c.__fn = this        var args = Array.from(arguments)[1]    var result = args ? c.__fn(...args) : c.__fn()    delete c.__fn    return result  }复制代码

3、bind

Function.prototype.myBind = function (context) {    var _this = this    var oldArgs = Array.from(arguments).slice(1)    return function () {      var finArgs = oldArgs.length ? oldArgs : Array.from(arguments)      return _this.apply(context, finArgs)    }  }复制代码

转载于:https://juejin.im/post/5d099f6ff265da1ba431f113

你可能感兴趣的文章
Java 语言中 Enum 类型的使用介绍
查看>>
Git and Subversion
查看>>
用Node+wechaty写一个爬虫脚本每天定时给女(男)朋友发微信暖心话
查看>>
opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar & 图像对比度、亮度值调整...
查看>>
名校推荐20本英文经典书(留着)
查看>>
反射机制(Java)
查看>>
【leetcode】Permutations
查看>>
全世界最详细的一步一步搭建RAC步骤(二)---配置ASM+裸设备【weber出品】
查看>>
LeetCode算法题-Longest Uncommon Subsequence I(Java实现)
查看>>
译文:《Grouped》各章小结
查看>>
数据库设计心得
查看>>
【洛谷 P4342】[IOI1998]Polygon(DP)
查看>>
流程管理软件(BPM)功能简介
查看>>
0408 汉堡包
查看>>
记一次服务器被勒索!
查看>>
docker jenkins安装(一)
查看>>
linux安装软件的几种方法
查看>>
HTML5系列:HTML5表单
查看>>
团队编程项目作业2-爬虫豆瓣top250项目代码设计规范
查看>>
Oracle觸發器調用procedure寄信
查看>>