浅谈js中的bind


Posted in Javascript onMarch 18, 2019

提到bind方法,估计大家还会想到call方法、apply方法;它们都是Function对象内建的方法,它们的第一个参数都是用来更改调用方法中this的指向。需要注意的是bind 是返回新的函数,以便稍后调用;apply 、call 则是立即调用原函数 。而今天我们主要讲解bind方法的理解与使用。

bind方法是EcmaScript5新增的方法,该方法在mdn上是这么介绍的:

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

语法:

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

参数thisArg表示:当绑定函数被调用时,该参数会作为this的指向。当使用new 操作符调用绑定函数时,该参数无效。
参数arg1, arg2, …表示:当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。
先来看个例子:

this.name="jack";
var demo={
name:"rose",
getName:function(){return this.name;}
}

console.log(demo.getName());//输出rose 这里的this指向demo

var another=demo.getName;
console.log(another())//输出jack 这里的this指向全局对象
 
//运用bind方法更改this指向
var another2=another.bind(demo);
console.log(another2());//输出rose 这里this指向了demo对象了

bind的应用

可以对一个函数预设初始参数:

function a(){
return Array.prototype.slice.call(arguments);//将类数组转换成真正的数组
}
var b=a.bind(this,15,20)
alert(b());//弹出 15,20
var s=b(25,30);
alert(s);//弹出 15,20,25,30

js bind的多次绑定只有第一次是有效的

var getname = function(){console.log(this.name)};
var m = getname.bind({name:'q1'}).bind({name:'q2'});
m();

输出的是q1

以上所述是小编给大家介绍的js中的bind详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持! 

Javascript 相关文章推荐
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
利用javascript数组长度循环数组内所有元素
Dec 27 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
Express.JS使用详解
Jul 17 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 #Javascript
JavaScript中this用法学习笔记
Mar 17 #Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 #Javascript
微信小程序登录session的使用
Mar 17 #Javascript
Javascript读写cookie的实例源码
Mar 16 #Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 #Javascript
vue自定义指令用法经典实例小结
Mar 16 #Javascript
You might like
PHP脚本数据库功能详解(下)
2006/10/09 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
菜鸟javascript基础资料整理2
2010/12/06 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
JS常见算法详解
2017/02/28 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
用Python编写简单的定时器的方法
2015/05/02 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python笔记之观察者模式
2019/11/20 Python
Python字典底层实现原理详解
2019/12/18 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
html5.2 dialog简介详解
2018/02/27 HTML / CSS
银行会计财务工作个人的自我评价
2013/10/29 职场文书
业务员岗位职责
2013/11/16 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
贷款承诺书
2015/01/20 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers