Function
Function.prototype.apply()
Function 实例的 apply()
方法会以给定的 this
值和作为数组(或类数组对象)提供的 arguments
调用该函数。
- 语法
- 示例
thisArg
调用 func 时提供的
this
值。如果函数不处于严格模式,则null
和undefined
会被替换为全局对象,原始值会被转换为对象。
argsArray
一个类数组对象,用于指定调用 func 时的参数,或者如果不需要向函数提供参数,则为
null
或undefined
。
用法
func.apply(thisArg);
func.apply(thisArg, argsArray);
Function.prototype.bind()
Function 实例的 bind()
方法创建一个新函数,当调用该新函 数时,它会调用原始函数并将其 this 关键字设置为给定的值,同时,还可以传入一系列指定的参数,这些参数会插入到调用新函数时传入的参数的前面。
- 语法
- 示例
thisArg
调用 func 时提供的
this
值。如果函数不处于严格模式,则null
和undefined
会被替换为全局对象,原始值会被转换为对象。如果使用new
运算符构造绑定函数,则忽略该值。
arg1, …, argN
在调用 func 时,插入到传入绑定函数的参数前的参数。
用法
func.bind(thisArg);
func.bind(thisArg, arg1);
func.bind(thisArg, arg1, arg2);
func.bind(thisArg, arg1, arg2, /* …, */ argN);
bind()
函数创建一个新的绑定函数。调用绑定函数通常会执行其所包装的函数,也称为目标函数。绑定函数将绑定时传入的参数(包括 this
的值和前几个参数)提前存储为其内部状态。而不是在实际调用时传入。通常情况下,你可以将下面视为等效:
const boundFn = fn.bind(thisArg, arg1, arg2);
const boundFn = (...restArgs) => fn.call(thisArg, arg1, arg2, ...restArgs);
构建的绑定函数的调用效果视为等效(但就构建 boundFn 的过程而言,不是二者等效的)。