函数绑定是通过bind方法将函数的this永久固定为指定对象并预设部分参数,返回新函数而不立即执行;常用于事件回调、定时器及参数预填充,与call/apply的立即执行不同,且不支持箭头函数。

函数绑定指的是让一个函数的 this 指向固定为某个对象,不管它后续怎么被调用。JavaScript 中的 bind 方法就是专门干这事的:它不执行函数,而是返回一个新函数,这个新函数调用时 this 永远绑定你指定的对象。
语法很简单:fn.bind(thisArg, arg1, arg2, ...)。第一个参数是将来调用时的 this 值,后面的参数是预先“填好”的实参(也叫预设参数或柯里化)。
thisArg 可以是任意值,比如对象、null、undefined,甚至原始值(但会被包装成对应对象)bind 后再调用时传的参数会追加在预设参数之后bind 返回的函数不能再次用 bind 改变 this(已被锁定),也不能用 call/apply 覆盖最典型的是事件回调和定时器中避免 this 丢失:
this 默认不是类实例,用 bind(this) 就能保持指向setTimeout(obj.method, 100) 会导致 method 内部 this 变成 window 或 undefined,改写成 setTimeout(obj.method.bind(obj), 100) 就行const add5 = add.bind(null, 5),之后调用 add5(3) 相当于 add(5, 3)
call 和 apply 是立即执行函数,并临时指定 this;bind 不执行,只返回绑定后的新函数,适合“延迟调用”或“复用绑定逻辑”。
立即学习“Java免费学习笔记(深入)”;
func.call(obj, a, b) → 立即运行,this 是 obj
func.apply(obj, [a, b]) → 立即运行,this 是 obj,参数用数组传const bound = func.bind(obj, a) → 不运行,返回函数,之后 bound(b) 相当于 func.call(obj, a, b)
bind 后的函数继承原函数的 length(形参个数),但只算未被预设的参数个数;另外,箭头函数没有自己的 this,所以对它调用 bind 是无效的。
this 会指向新实例,而不是 bind 时传入的对象handleClick = () => { ... }
基本上就这些。bind 不复杂但容易忽略细节,关键是理解它“返回新函数 + 固定 this + 预设参数”三位一体的作用。
以上就是什么是函数绑定_javascript中bind方法如何使用?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号