bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

语法

fun.bind(thisArg[, arg1[, arg2[, …]]])

参数

thisArg

当绑定函数被调用时,该参数会作为原函数运行时的 this 指向。当使用new 操作符调用绑定函数时,该参数无效。

arg1, arg2, …

当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。
返回值,返回由指定的this值和初始化参数改造的原函数拷贝

描述

bind() 函数会创建一个新函数(称为绑定函数),新函数与被调函数(绑定函数的目标函数)具有相同的函数体(在 ECMAScript 5 规范中内置的call属性)。当新函数被调用时 this 值绑定到 bind() 的第一个参数,该参数不能被重写。绑定函数被调用时,bind() 也接受预设的参数提供给原函数。一个绑定函数也能使用new操作符创建对象:这种行为就像把原函数当成构造器。提供的 this 值被忽略,同时调用时的参数被提供给模拟函数。

兼容旧浏览器polyfill

if (!Function.prototype.bind) {Function.prototype.bind = function (oThis) {if (typeof this !== "function") {// closest thing possible to the ECMAScript 5// internal IsCallable functionthrow new TypeError("Function.prototype.bind - what is trying to be bound is not callable")}var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {},fBound = function () {fBound.prototype = this instanceof fNOP ? new fNOP() : fBound.prototypereturn fToBind.apply(this instanceof fNOP? this: oThis || this,aArgs )}
//aArgs.concat(Array.prototype.slice.call(arguments));why use concat method instead of aArgs hereif( this.prototype ) {// Function.prototype doesn't have a prototype propertyfNOP.prototype = this.prototype}return fBound}
}

Bind 函数的使用相关推荐

  1. C语言网络编程:bind函数详解

    文章目录 函数功能 函数头文件 函数使用 函数参数 函数举例 为什么需要bind函数 服务器如何知道客户端的ip和端口号 htons函数 `htons`兄弟函数`htonl`,`ntohs`,`nto ...

  2. bind函数作用、应用场景以及模拟实现

    bind函数 bind 函数挂在 Function 的原型上 Function.prototype.bind 创建的函数都可以直接调用 bind,使用: function func(){console ...

  3. 函数式编程之-bind函数

    Bind函数 Bind函数在函数式编程中是如此重要,以至于函数式编程语言会为bind函数设计语法糖.另一个角度Bind函数非常难以理解,几乎很少有人能通过简单的描述说明白bind函数的由来及原理. 这 ...

  4. 让bind函数支持IE8浏览器的方法

    bind函数在IE8下是不支持的,只需要在你的js文件中加入如下代码就可以支持IE8 //让bind函数支持IE8 if (!Function.prototype.bind) { Function.p ...

  5. bind函数怎么用JAVA_c++bind函数的用法

    bind函数: auto newCallable = bind(callable, arg_list); callable依据手册可以是: Callable object (function obje ...

  6. react之bind函数到组件通识篇

    前言 在说起react的函数绑定之前,我们有必要了解下bind函数的作用是什么,函数的执行的上下文以及其默认的this是指向的哪里?有点抽象?那么你可以去看下下面的两个方法的执行会有什么区别吧. le ...

  7. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

  8. 《Javascript高级程序设计》读书笔记之bind函数详解

    为什么需要bind var name = "The Window"; var object = {name: "My Object",getNameFunc: ...

  9. 实现一个bind函数

    目前的打算还是继续深入前端基础知识,所以打算从polyfill开始做起. bind函数 bind函数最常见的用法是绑定函数的上下文,比如在setTimeout中的this一般都是指向window,如果 ...

  10. 2.cocos2dx 3.2中语法的不同之处,lambada表达式的使用和function和bind函数的使用

    1        打开建好的T32  Cocos2dx-3.2的一个项目 2        设置Cocos显示窗口的位置是在AppDelegate.cpp中: 3  设置自适应窗口大小的代码是在上面的 ...

最新文章

  1. Windows xp 无人值守远程安装部署
  2. Spring Boot实践--CommandLineRunner接口
  3. 【C 语言】数据类型本质 ( 数据类型别名 | typedef 关键字 | 为复杂数据类型设置别名 | 为简单数据类型设置别名 )
  4. table表格的两个实现方法(怎样消除内部边框的间距)
  5. RSA加密算法——密码学笔记(四)
  6. 关于javascript中私有作用域的预解释
  7. pythondocx模板_使用python-docx-template修改word文档
  8. php自动裁剪黑边,视频画面裁剪怎么将视频四周的黑边去除?
  9. python 去掉转义字符_python前期准备
  10. 抓住“智慧城市”的机遇
  11. 安装Microsoft Visual Studio 2010 Service Pack 1 ,系统无法找到指定的对象
  12. 【BZOJ 1050】旅行comf
  13. 使用openlayers加载地图行政区域(结合百度云地图)
  14. Chrome浏览器搜索引擎问题
  15. 苹果手机解压缩软件_最近很火的解压缩软件Bandizip
  16. TOPSIS(优劣解距离法)【附Python实现代码及可视化代码】
  17. 使用Keras编写神经网络预测大乐透彩票,并利用历史数据回测
  18. 有关于投资最优化的模型求解
  19. 2019年自考计算机应用基础(实践),2019年自考计算机应用基础试题练习(九)
  20. 万年历农历程序(抄表法)

热门文章

  1. 21秋福师《计算机网络与通讯》在线作业一[答案]
  2. html中babel编译vue,vue-cli中的babel配置文件.babelrc实例详解
  3. 荣耀v20会升级到Android10吗,荣耀v20该不该升级到emui10?有什么样的优势?
  4. 从小游戏到APP,登顶iOS排行榜,这款PVP竞技篮球手游都做了些什么?
  5. 免抠PNG图片素材的下载技巧
  6. MFC中用UpdateData来刷新数据
  7. 信号强度诊断(第一阶段)
  8. 别闯进Hybrid App的误区
  9. Webmin -- Webmin Users
  10. 用VLC转换视频格式