浅谈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 相关文章推荐
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
Feb 18 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
轻松理解Python 中的 descriptor
2017/09/15 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Django学习之文件上传与下载
2019/10/06 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
软件工程师岗位职责
2013/11/16 职场文书
公司节能减排方案
2014/05/16 职场文书
政府采购方案
2014/06/12 职场文书
实习生矿工检讨书
2014/10/13 职场文书
教师党员承诺书2015
2015/01/21 职场文书
创业计划书之熟食店
2019/10/16 职场文书