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方法相关推荐

  1. JS调用模式以及bind()方法

    本来是想好好归纳下bind()方法,但是从中又牵扯出了现在读的js语言精粹的一些知识,那这里就从基础开始整理下知识点. 函数 JS中最重要的组成部分就是函数了,由于JS中没有类之说,类的功能实现也是靠 ...

  2. js中自己实现bind方法及详解

    1. 详细代码如下: if (!Function.prototype.bind) {Function.prototype.bind = function () {var self = this, // ...

  3. js中函数对象的方法,原型方法apply、call、bind、toString、toLocaleString、valueOf

    全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数教程全解 js中函数也是一种对象,因此有自己的原型对象,可以作为其他对象的属性,也可以作为其他函数的参数. 函数方法 [apply() ...

  4. JS中的call、apply、bind方法详解

    bind 是返回对应函数,便于稍后调用:apply .call 则是立即调用 . apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(co ...

  5. AJAX ||JQeury实现方式||原生的JS实现方式(了解)

    AJAX 1. 概念: ASynchronous JavaScript And XML    异步的JavaScript 和 XML     1. 异步和同步:客户端和服务器端相互通信的基础上    ...

  6. 面试官问:能否模拟实现JS的bind方法(高频考点)

    可以点击上方的话题JS基础系列,查看往期文章 写于2018年11月21日,发布在掘金阅读量1.3w+ 前言 这是面试官问系列的第二篇,旨在帮助读者提升JS基础知识,包含new.call.apply.t ...

  7. 【转载】JS中bind方法与函数柯里化

    原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...

  8. js 原生将元素插入到父元素首位,jquery和原生两种方式

    一般来说我们新加的元素会放置到父元素的首位   但也有放到首位的那种可能,每次追加元素 放到最前面 业务还是有这种需求的  可能 用jquery的童鞋 会对 append 这个方法很熟悉 当然 用框架 ...

  9. 原生js实现preAll和nextAll方法

    一直以来都在好奇,jquery的prevAll和nextAll方法都是咋实现的,那么厉害,而且还那么方便.不得不说,jquery真的帮我们省去了开发中手写大量js代码带来的开发进度问题,而且很好的解决 ...

最新文章

  1. MolCLR | 对比学习在分子图表示任务中大有作为
  2. 英文关键词计算tf-idf 余弦相似度_TFIDF原理与实践
  3. pyCharm 当中使用VirtualEnv
  4. publishing failed with multiple errors
  5. entitymanager_实体管理器的类型:应用程序管理的EntityManager
  6. c语言文件的读写通讯录,学C三个月了,学了文件,用C语言写了个通讯录程序
  7. 收藏功能_微软Edge获得了新的收藏夹菜单、PDF功能等
  8. 页眉中字数未满但自动换行
  9. grassfire算法
  10. 学hadoop需要什么基础
  11. 一张图学会python应用到excel-简单使用python做excel多文件批量搜索(带图形界面)(已更新)...
  12. 使用k8s Ingress暴露gRPC服务
  13. 将I1111改成I1112
  14. swift编程语言和c,Swift与Objective C对比:选择更快的开发语言
  15. d3.js学习10----折线图的制作
  16. Vue3源码解析01--Vue3初探
  17. Mathematica解一个精巧的差分方程
  18. 超级通俗易懂的自然连接
  19. 基于PHP的大学生问卷调查系统
  20. Python扫码登录保存和验证cookies值——网易云音乐篇(九)

热门文章

  1. 38个Pandas实用技巧
  2. zabbix_server执行window脚本出现中文乱码如何解决
  3. 编写可靠Linux shell脚本的建议
  4. 为什么mysql启动不了了_Mysql为什么启动不了
  5. Win 7 安装VMware Workstation Pro 14出现 “Intel VT-x禁用”问题以及“无法连接 MKS: 套接字连接尝试次数太多;正在放弃”问题的实质性解决
  6. VS2010-MFC(MFC常用类:MFC异常处理)
  7. Atom安装或更新插件失败的解决方案
  8. 解决go get下载包失败问题
  9. Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
  10. 安装vim提示Depends: libpython3.5 (>= 3.5.0~b1) but it is not going to be installed的解决方法