浅谈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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
JS Map 和 List 的简单实现代码
Jul 08 Javascript
js setTimeout 常见问题小结
Aug 13 Javascript
JS+CSS实现可拖动的弹出提示框
Feb 16 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
javascript冒泡排序小结
Apr 10 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 Javascript
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 Javascript
javascript的var与let,const之间的区别详解
Feb 18 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导出Word文档的原理和实例
2013/10/21 PHP
PHP7多线程搭建教程
2017/04/21 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python实现端口复用实例代码
2014/07/03 Python
Python最基本的输入输出详解
2015/04/25 Python
Python中格式化format()方法详解
2017/04/01 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Django ORM filter() 的运用详解
2020/05/14 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
你对IPv6了解程度
2016/02/09 面试题
会议活动邀请函
2014/01/27 职场文书
市场专员岗位职责
2014/02/14 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
文明礼貌主题班会
2015/08/14 职场文书
django上传文件的三种方式
2021/04/29 Python