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的使用之绑定函数

    |--最基本的用法:创建一个函数(返回值:新函数),使新函数永久绑定this为指定对象(第一个参数),如果不做bind处理,函数会丢失原来的对象。
    |--案例:

bind使新函数this绑定为obj

三、bind的使用之预定义参数

    |--可以为新函数预定义参数,调用的时候传入其他参数即可。
    |--案例:

调用newList默认参数37

四、bind的使用之和setTimeout一起使用

    |--示例:

setTimeout里的this指向window

    |--解决办法:

绑定定时器内部this为Person

五、bind和构造函数一起使用

    |--构造函数1.bind(null/{})返回一个新的构造函数,两个构造函数共用一个原型。
    |--示例:

两个构造函数共用一个原型

六、使用bind将类数组转为数组

    |--示例:使用call和bind

call和bind

七、自己实现bind函数

    |--原因:一些低版本浏览器不支持bind方法,这时就要自己实现bind方法。
    |--实现:

在Function的原型添加自定义bind

八、带参数的bind实现

    |--示例:

带参数的bind实现
上一篇下一篇

猜你喜欢

热点阅读