bind
是在 ES5 加入的语法,具体如何使用 MDN 都有。但有一点需要额外注意一下:bind
会返回一个新的函数。也就是说:它会修改 this
的指向,并返回新的函数体。
实现思路
- 改变
this
指向: 需要使用apply
或call
- 返回新的函数体: 函数作为值返回
实现
使用闭包保存 this 指针、上下文和参数,并将上下文和参数使用 apply 改变 this 指向。
1 | Function.prototype.bind1 = function(context) { |
使用方式和原生 bind()
一样:
1 | var person = { name:"紫升" } |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 紫升的博客!
评论