博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js原生方式实现bind方法
阅读量:6575 次
发布时间:2019-06-24

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

1、思路

(1)因为bind方法不会立即执行函数,需要返回一个待执行的函数(这里用到闭包,可以返回一个函数)return function(){}

(2)作用域绑定,这里可以使用apply或者call方法来实现 xx.call(yy)/xx.apply(yy)

(3)参数传递,由于参数的不确定性,需要用apply传递数组(实例更明了xx.apply(yy,[...Array...]),如果用call就不太方便了,因为call后面的参数需要一个个列出来。

 

2、实现

Function.prototype.bind = function(newThis) {                var aArgs = Array.prototype.slice.call(arguments, 1) //拿到除了newThis之外的预置参数序列                var that = this                return function() {                    return that.apply(newThis, aArgs.concat(Array.prototype.slice.call(arguments)))                    //绑定this同时将调用时传递的序列和预置序列进行合并                }            }

 

转载地址:http://xygjo.baihongyu.com/

你可能感兴趣的文章
关于python中的round()和javascript中的round()的比较
查看>>
写程序注意
查看>>
linux下虚拟主机配置
查看>>
正则表达式(转)
查看>>
js方法实现rgb颜色转换成16进制格式的代码的方法
查看>>
jQuery原型方法first,last,eq,slice源码分析
查看>>
IOS应用之一--异常处理(UncaughtExceptionHandler)
查看>>
linux dialog详解(图形化shell)
查看>>
Php.ini文件位置在哪里 Php.ini文件找不到
查看>>
如何在定制化组件中实现并使用v-model
查看>>
浏览器从输入到输出的过程与原理一
查看>>
c++ const
查看>>
The Little Redis Book
查看>>
java ClassLoader static
查看>>
Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)
查看>>
程序员在编程中遇到的奇葩弱智问题(转)
查看>>
ldap实现用户认证
查看>>
java基础---->Serializable的使用---- http://www.cnblogs.com/huhx/p/serializable.html
查看>>
快速排序
查看>>
14.UA池和代理池
查看>>