Javascript中bind()方法的使用与实现

来源:互联网 发布:qt淘宝互刷平台2017 编辑:程序博客网 时间:2024/05/21 05:43

在讨论bind()方法之前我们先来看一道题目:

var altwrite = document.write;altwrite("hello");//1.以上代码有什么问题//2.正确操作是怎样的//3.bind()方法怎么实现

对于上面这道题目,答案并不是太难,主要考点就是this指向的问题,altwrite()函数改变this的指向global或window对象,导致执行时提示非法调用异常,正确的方案就是使用bind()方法:

altwrite.bind(document)("hello")

当然也可以使用call()方法:

altwrite.call(document, "hello")

本文的重点在于讨论第三个问题bind()方法的实现,在开始讨论bind()的实现之前,我们先来看看bind()方法的使用:

绑定函数

bind()最简单的用法是创建一个函数,使这个函数不论怎么调用都有同样的this值。常见的错误就像上面的例子一样,将方法从对象中拿出来,然后调用,并且希望this指向原来的对象。如果不做特殊处理,一般会丢失原来的对象。使用bind()方法能够很漂亮的解决这个问题:

this.num = 9; var mymodule = {  num: 81,  getNum: function() { return this.num; }};module.getNum(); // 81var getNum = module.getNum;getNum(); // 9, 因为在这个例子中,"this"指向全局对象// 创建一个'this'绑定到module的函数var boundGetNum = getNum.bind(module);boundGetNum(); // 81
原创粉丝点击