js原生方式实现bind方法
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 = thisreturn function() {return that.apply(newThis, aArgs.concat(Array.prototype.slice.call(arguments)))//绑定this同时将调用时传递的序列和预置序列进行合并 }}
js原生方式实现bind方法相关推荐
- JS调用模式以及bind()方法
本来是想好好归纳下bind()方法,但是从中又牵扯出了现在读的js语言精粹的一些知识,那这里就从基础开始整理下知识点. 函数 JS中最重要的组成部分就是函数了,由于JS中没有类之说,类的功能实现也是靠 ...
- js中自己实现bind方法及详解
1. 详细代码如下: if (!Function.prototype.bind) {Function.prototype.bind = function () {var self = this, // ...
- js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf
全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数教程全解 js中函数也是一种对象,因此有自己的原型对象,可以作为其他对象的属性,也可以作为其他函数的参数. 函数方法 [apply() ...
- JS中的call、apply、bind方法详解
bind 是返回对应函数,便于稍后调用:apply .call 则是立即调用 . apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(co ...
- AJAX ||JQeury实现方式||原生的JS实现方式(了解)
AJAX 1. 概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML 1. 异步和同步:客户端和服务器端相互通信的基础上 ...
- 面试官问:能否模拟实现JS的bind方法(高频考点)
可以点击上方的话题JS基础系列,查看往期文章 写于2018年11月21日,发布在掘金阅读量1.3w+ 前言 这是面试官问系列的第二篇,旨在帮助读者提升JS基础知识,包含new.call.apply.t ...
- 【转载】JS中bind方法与函数柯里化
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...
- js 原生将元素插入到父元素首位,jquery和原生两种方式
一般来说我们新加的元素会放置到父元素的首位 但也有放到首位的那种可能,每次追加元素 放到最前面 业务还是有这种需求的 可能 用jquery的童鞋 会对 append 这个方法很熟悉 当然 用框架 ...
- 原生js实现preAll和nextAll方法
一直以来都在好奇,jquery的prevAll和nextAll方法都是咋实现的,那么厉害,而且还那么方便.不得不说,jquery真的帮我们省去了开发中手写大量js代码带来的开发进度问题,而且很好的解决 ...
最新文章
- MolCLR | 对比学习在分子图表示任务中大有作为
- 英文关键词计算tf-idf 余弦相似度_TFIDF原理与实践
- pyCharm 当中使用VirtualEnv
- publishing failed with multiple errors
- entitymanager_实体管理器的类型:应用程序管理的EntityManager
- c语言文件的读写通讯录,学C三个月了,学了文件,用C语言写了个通讯录程序
- 收藏功能_微软Edge获得了新的收藏夹菜单、PDF功能等
- 页眉中字数未满但自动换行
- grassfire算法
- 学hadoop需要什么基础
- 一张图学会python应用到excel-简单使用python做excel多文件批量搜索(带图形界面)(已更新)...
- 使用k8s Ingress暴露gRPC服务
- 将I1111改成I1112
- swift编程语言和c,Swift与Objective C对比:选择更快的开发语言
- d3.js学习10----折线图的制作
- Vue3源码解析01--Vue3初探
- Mathematica解一个精巧的差分方程
- 超级通俗易懂的自然连接
- 基于PHP的大学生问卷调查系统
- Python扫码登录保存和验证cookies值——网易云音乐篇(九)
热门文章
- 38个Pandas实用技巧
- zabbix_server执行window脚本出现中文乱码如何解决
- 编写可靠Linux shell脚本的建议
- 为什么mysql启动不了了_Mysql为什么启动不了
- Win 7 安装VMware Workstation Pro 14出现 “Intel VT-x禁用”问题以及“无法连接 MKS: 套接字连接尝试次数太多;正在放弃”问题的实质性解决
- VS2010-MFC(MFC常用类:MFC异常处理)
- Atom安装或更新插件失败的解决方案
- 解决go get下载包失败问题
- Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
- 安装vim提示Depends: libpython3.5 (>= 3.5.0~b1) but it is not going to be installed的解决方法