浅谈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 相关文章推荐
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
用javascript替换URL中的参数值示例代码
Jan 27 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
Jun 26 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
vue3不同环境下实现配置代理
May 25 Vue.js
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程序员不应该忽略的3点
2015/10/09 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
Angular排序实例详解
2017/06/28 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
Python2.x与Python3.x的区别
2016/01/14 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Python+PyQt5+MySQL实现天气管理系统
2020/06/16 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
开办大学饮食联盟创业计划书
2014/01/29 职场文书
买房协议书
2014/04/11 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
工地安全质量标语
2014/06/07 职场文书
建筑施工安全责任书
2014/07/24 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
五好家庭事迹材料
2014/12/20 职场文书
golang json数组拼接的实例
2021/04/28 Golang