JavaScript中显式绑定通过call调用函数时,第一个参数指定this值,后续参数按顺序传入原函数;其语法为func.call(thisArg, arg1, arg2, ...),支持扩展运算符传参,区别于apply(参数为数组)和bind(返回预设参数的新函数)。

JavaScript 中显式绑定通过 call 调用函数时,第一个参数指定 this 值,后续参数按顺序传入原函数。
call 的基本语法和参数结构
call 方法的签名是:func.call(thisArg, arg1, arg2, ...)。其中:
-
thisArg是函数执行时内部this指向的对象(null或undefined在非严格模式下会自动转为全局对象) -
arg1, arg2, ...是逐个列出的实参,会按位置一一对应传递给目标函数的形参
实际调用示例
比如有一个普通函数:
function greet(greeting, punctuation) {return `${greeting}, ${this.name}${punctuation}`;
}
用 call 显式绑定并传参:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
greet.call(person, 'Hello', '!'); // "Hello, Alice!"
这里 person 成为 this,'Hello' 和 '!' 分别赋值给 greeting 和 punctuation。
处理动态参数列表
若参数数量不确定,不能直接展开数组,但可用扩展运算符(ES6+)配合 call:
greet.call(person, ...args); // "Hi, Alice?"
注意:不支持扩展运算符的老环境(如 IE),需用 apply 替代——它接受参数数组。
与 apply 和 bind 的关键区别
call 立即执行,参数逐个列出;apply 也立即执行,但第二个参数是数组;bind 不执行,返回新函数,参数可预设(柯里化)。

















