浅谈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中的undefined,null,"",0和false
Mar 08 Javascript
jQuery的.live()和.die() 使用介绍
Sep 10 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
javascript 中that的含义示例介绍
May 14 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
JavaScript中Math.SQRT2属性的使用详解
Jun 14 Javascript
javascript中if和switch,==和===详解
Jul 30 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
Oct 11 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 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中GET变量的使用
2006/10/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python切片索引用法示例
2018/05/15 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python实现静态服务器
2019/09/05 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Python enumerate内置库用法解析
2020/02/24 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
毕业生就业推荐信范文
2013/12/01 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL