bind方法返回一个this永久绑定且预设参数的新函数,该函数不可被call/apply修改this,但new调用时原绑定失效。

bind 方法会创建并返回一个新函数,这个新函数在被调用时,其 this 值永久绑定为 bind 的第一个参数,且预设部分参数(即“柯里化”)。
返回的是一个可调用的新函数
bind 不会立即执行原函数,而是返回一个全新的、绑定好 this 和初始参数的函数。它和原函数是两个独立的函数对象,内存地址不同,也不共享闭包环境。
- 每次调用
bind都生成一个新函数,即使参数完全相同 - 返回的函数可以后续传参:预设参数(
bind后续参数) + 调用时传入参数(按顺序拼接) - 返回的函数无法再通过
call/apply改变其this(严格模式下无效;非严格模式下,this仍为绑定值)
基本语法与返回行为
写法:const boundFn = originalFn.bind(thisArg, arg1, arg2)
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
例如:
function greet(greeting, punctuation) {
return `${greeting}, ${this.name}${punctuation}`;
}
const person = { name: 'Alice' };
const sayHello = greet.bind(person, 'Hello'); // 预设 this 和第一个参数
console.log(sayHello('!')); // "Hello, Alice!" —— '!' 是调用时传入的第二个参数
console.log(sayHello); // ƒ bound greet() —— 确实是一个新函数
注意 bind 返回函数的 this 不可覆盖
即便对返回的函数再用 call 或 apply 显式指定 this,也不会生效(这是 bind 的设计特性):
-
sayHello.call({name: 'Bob'}, '?')仍输出"Hello, Alice?" - 只有
new调用时例外:若用new boundFn(),则this指向新实例,原绑定被忽略(此时它表现得像构造函数)

















