bind 方法创建新函数并永久绑定指定 this 值和预设参数;调用 func.bind(obj) 后,新函数无论在哪执行 this 始终为 obj;支持预设前置参数实现柯里化,如 func.bind(null, ‘a’, ‘b’) 调用时自动前置;新函数不可用 new 调用,无 prototype,length 为原函数形参减已绑定数。

bind 是 JavaScript 中函数对象的一个方法,用来创建一个新函数,并**永久绑定**指定的 this 值和部分预设参数。它不立即执行原函数,只返回一个“准备就绪”的新函数。
bind 如何固定 this 值?
在回调、事件处理或异步操作中,this 容易丢失。bind 可提前锁定 this 指向:
调用 func.bind(obj) 后,无论新函数在哪被调用,其内部 this 始终是 obj 即使把新函数赋值给变量、传入 setTimeout 或作为事件监听器,this 也不会变 例如:const bound = obj.method.bind(obj); bound(); → this 就是 obj
bind 如何预设参数(柯里化)?
可以在 bind 调用时传入额外参数,它们会成为新函数调用时的**前置参数**:
func.bind(null, 'a', 'b') 返回的新函数,每次调用时都会自动把 'a' 和 'b' 放在最前面 后续调用传入的参数会追加在预设参数之后,比如 newFunc('c') 相当于 func('a', 'b', 'c') 常用于封装通用逻辑,比如 const logError = console.log.bind(console, '[ERROR]');
bind 返回的新函数有什么特点?
这个新函数是独立的、可复用的,且继承原函数的 length(形参个数)但忽略已绑定的参数:
立即学习“Java免费学习笔记(深入)”;
它不能被 new 调用(除非原函数本身支持),否则会报错 newFunc.length 等于原函数形参个数减去已绑定参数个数(ES5+ 行为) 它没有原型(newFunc.prototype === undefined),所以不能用作构造函数
基本上就这些。bind 的核心就是“锁定 this + 预填参数”,生成一个定制化的新函数,不复杂但容易忽略细节。
以上就是JavaScript bind是什么_它如何创建新函数?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542625.html
微信扫一扫
支付宝扫一扫