bind方法的实现
2019-09-30 本文已影响0人
stillpeng
一、bind的作用
|--案例:
报错:非法的调用 |--错误分析:write方法是document对象下的,将write方法赋值给变量dw,dw将成为window下的一个方法,
调用dw相当于window.dw,此时dw里的this已经指向了window而不是document。所以报错。
|--如何解决:通过bind来改变this的指向(指向document)
二、bind的使用之绑定函数
|--最基本的用法:创建一个函数(返回值:新函数),使新函数永久绑定this为指定对象(第一个参数),如果不做bind处理,函数会丢失原来的对象。
|--案例:
三、bind的使用之预定义参数
|--可以为新函数预定义参数,调用的时候传入其他参数即可。
|--案例:
四、bind的使用之和setTimeout一起使用
|--示例:
setTimeout里的this指向window|--解决办法:
绑定定时器内部this为Person五、bind和构造函数一起使用
|--构造函数1.bind(null/{})返回一个新的构造函数,两个构造函数共用一个原型。
|--示例:
六、使用bind将类数组转为数组
|--示例:使用call和bind
call和bind七、自己实现bind函数
|--原因:一些低版本浏览器不支持bind方法,这时就要自己实现bind方法。
|--实现:
八、带参数的bind实现
|--示例:
带参数的bind实现