javascript方法--bind()

bind方法,顾名思义,就是绑定的意思,到底是怎么绑定然后怎么用呢,下面就来说说我对这个方法的理解。

语法

fun.bind(this,arg1,arg2,...)

bind()方法会创建一个新的函数,称为绑定函数,fun方法在this环境下调用

该方法可传入两个参数,第一个参数作为this作用域,可以理解为让fun函数在this作用域下运行(移花接木,所以this对象 可以借用到fun函数),第二个及以后的参数则作为函数的参数调用

bind()方法绑定函数作用域不会像call和apply方法会对目标函数进行自动执行,call和apply不能用于事件绑定

实例 

1.创建绑定函数

this.a = 1;
var module = {a : 2,getA:function() {return this.a;    }
};
module.getA();//2var getA1 = module.getA;
// getA在外部调用,此时的this指向了全局对象
getA1();//1// 再把getA1方法绑定到module环境上
var getA2 = getA1.bind(module);
getA2(); //2

从上面的例子可以看出,为什么要创建绑定函数,就是当我们调用某些函数的时候是要在特定环境下才能调用到,所以我们就要把函数放在特定环境下,就是使用bind把函数绑定到特定的所需的环境下。

2.让函数拥有预设的参数

使用bind()方法使函数拥有预设的初始参数,这些参数会排在最前面,传给绑定函数的参数会跟在它们后面

function list(){// 让类数组arguments拥有数组的方法slice,这个函数实现了简单把类数组转换成数组return Array.prototype.slice.call(arguments);
}list(1,2,3);//[1,2,3]//给list绑定一个预设参数4
var list1 = list.bind(undefined,4);list1();//[4]list1(1,2,3);//[4,1,2,3]

3.setTimeout的使用

正常情况下,调用setTimeout的时候this会指向全局对象,但是使用类的方法时我们需要指向类的实例,所以要把this,绑定要回调函数方便继续使用实例

function Fun1() { this.name = 1;}
Fun1.prototype.fun2 = function() {window.setTimeout(this.fun3.bind(this), 1000);}
Fun1.prototype.fun3 = function(){console.log('name:'+this.name);//name:1
}
var fun = new Fun1();
fun.fun2();

4.快捷方法--把类数组转换成数组

第一种方法是使用apply方法

 function fun1() {var slice = Array.prototype.slice;return slice.apply(arguments);}fun1(1,2,3);//[1,2,3]

第二种方法是使用call方法和bind方法一起使用

function fun2() {var unboundSlice = Array.prototype.slice;// 把函数的call方法绑定在数组slice方法上,之后再给call方法传递参数var slice = Function.prototype.call.bind(unboundSlice);return slice(arguments);
}fun2(1,2,3);//[1,2,3]

转:javascript方法--bind()相关推荐

  1. 节点插入--对比jQuery和JavaScript方法(一)

    二.插入元素: 1 <div> 2 <p>面朝大海,春暖花开</p> 3 </div> (一).jQuery方法 1.在节点内部插入: 方法 说明 ap ...

  2. admui 能再php上用吗,Javascript 方法

    Javascript 方法 主题结构 主要分为以下模块: /src/themes/(布局名)/js/ └── site.js (布局模块) /src/themes/global/js/ ├── com ...

  3. html字符串长度函数,最常用的20个javascript方法函数

    最常用的20个javascript方法函数 常用的`javascript方法函数有哪些?下面YJBYS小编为你盘点,废话不说,直接放码! 1字符串长度截取 function cutstr(str, l ...

  4. 判断是否为数组的 JavaScript 方法总结

    前言 我们在日常开发中,常常有判断某值类型需求,今天我们总结一下常见的几种用来判断是否为数组的 JavaScript 方法. Array.isArray Array.isArray() 是ES5新增的 ...

  5. 三种引入JavaScript方法

    三个简单JavaScript语句 1.弹窗:alert(); 2.网页控制台打印:console.log(); 3.页面body显示:document.write(); 引入JavaScript方法 ...

  6. 计算请假天数JavaScript方法

    计算请假天数JavaScript方法 前言 最近,有这么个需求,给用户做个请假审批系统,要输入请假开始时间和结束时间,同时计算出请假天数,如果年假数量不够提示不能提交,如果年假数量够的话,就走审批工作 ...

  7. Javascript方法实现拖曳和用HTML实现拖曳

    Javascript方法实现拖曳和用HTML实现拖曳 1.js实现拖曳 <!DOCTYPE html> <html lang="en"><head&g ...

  8. 详解javascript的bind方法

    JS的bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用. 通过bind可解决两个 ...

  9. javascript的bind方法绑定深入理解

    一.方法介绍function.bind(thisArg[,arg1[,arg2[,argN]]])1.方法绑定在thisArg对象上.2.可以绑定参数,用于返回值方法的下一步参数 var checkN ...

最新文章

  1. linux更换网卡不识别_详解Linux双网卡绑定脚本的方法示例
  2. golang中的方法
  3. 安全感与职业发展的几点思考
  4. 一句话讲清楚GIL锁
  5. python和C语言分别实现插入排序
  6. 自学python(一)
  7. 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!
  8. Python爬虫 senlenium爬取拉勾网招聘数据,你学会了吗
  9. Linux Shell高级技巧(三)
  10. vuejs解析url地址
  11. 牛客网暑期ACM多校训练营(第十场)
  12. Linux下的 API Hook
  13. 任正非:HR面试不深刻导致大规模进人、走人,耽误人家几年对得起人家吗?...
  14. 5 获取Form表单取值
  15. JavaSE基础———StringBuffer StringBuilder Arrays和基本数据类型包装类
  16. 小规模票表比对不通过_实用 | 增值税纳税申报比对失败怎么办?操作指南来啦...
  17. 30余种加密编码类型的密文特征分析(建议收藏)
  18. EXFO max-715b光纤测试仪参数介绍
  19. 《假如给我三天光明》读后感及其摘录(1)
  20. matlab软件及基础实验第8单元,《MATLAB统计分析与应用:40个案例分析》程序与数据(内含彩蛋)...

热门文章

  1. beautifulsoup爬取网页中的表格_用 Python 爬取网页
  2. Java DataOutputStream size()方法及示例
  3. 在C ++ STL中使用string :: to_string()将数字转换为字符串
  4. java后台json传递,后台json传递
  5. 合并两个链表数据结构c语言,合并两个链表.
  6. 三次握手面试题java_java面试题三次握手和四次挥手-嗨客网
  7. mkdir 函数_PHP mkdir()函数与示例
  8. Java Process getOutputStream()方法与示例
  9. 线程池是如何执行的?拒绝策略有哪些?
  10. 磊哥最近面试了好多人,聊聊我的感受!(附面试知识点)