跳到主要内容

Function

Function.prototype.apply()

Function 实例的 apply() 方法会以给定的 this 值和作为数组(或类数组对象)提供的 arguments 调用该函数。

thisArg

调用 func 时提供的 this 值。如果函数不处于严格模式,则 nullundefined 会被替换为全局对象,原始值会被转换为对象。

argsArray

一个类数组对象,用于指定调用 func 时的参数,或者如果不需要向函数提供参数,则为 nullundefined

用法
func.apply(thisArg);
func.apply(thisArg, argsArray);

Function.prototype.bind()

Function 实例的 bind() 方法创建一个新函数,当调用该新函数时,它会调用原始函数并将其 this 关键字设置为给定的值,同时,还可以传入一系列指定的参数,这些参数会插入到调用新函数时传入的参数的前面。

thisArg

调用 func 时提供的 this 值。如果函数不处于严格模式,则 nullundefined 会被替换为全局对象,原始值会被转换为对象。如果使用 new 运算符构造绑定函数,则忽略该值。

arg1, …, argN

在调用 func 时,插入到传入绑定函数的参数前的参数。

用法
func.bind(thisArg);
func.bind(thisArg, arg1);
func.bind(thisArg, arg1, arg2);
func.bind(thisArg, arg1, arg2, /* …, */ argN);

Function.prototype.call()

Function 实例的 call() 方法会以给定的 this 值和逐个提供的参数调用该函数。

thisArg

调用 func 时提供的 this 值。如果函数不处于严格模式,则 nullundefined 会被替换为全局对象,原始值会被转换为对象。

arg1, …, argN

函数的参数。

用法
func.call(thisArg);
func.call(thisArg, arg1);
func.call(thisArg, arg1, arg2);
func.call(thisArg, arg1, arg2, /* …, */ argN);
信息

这个函数几乎与 apply() 相同,只是函数的参数以列表的形式逐个传递给 call(),而在 apply() 中它们被组合在一个对象中,通常是一个数组——例如:func.call(this, "eat", "bananas")func.apply(this, ["eat", "bananas"])

Function.prototype.toString()

Function 实例的 toString() 方法返回一个表示该函数源码的字符串。

示例
function sum(a, b) {
return a + b;
}

console.log(sum.toString());
// Expected output: "function sum(a, b) {
// return a + b;
// }"

console.log(Math.abs.toString());
// Expected output: "function abs() { [native code] }"

function.prototype.length

表示函数的形参个数(不包括剩余参数和默认参数)。

function example(a, b) {}
console.log(example.length); // 2

函数的 length 属性只计算从第一个参数到第一个默认参数或剩余参数之前的参数个数。对于那些在第一个默认参数或剩余参数之后定义的参数,它们不会包含在 length 属性的计数中。

function example(a, b = 1, c) {}
console.log(example.length); // 输出: 1

function.prototype.name

表示函数的名称。如果是匿名函数,则返回空字符串。

function example() {}
console.log(example.name); // "example"

const anon = function () {};
console.log(anon.name); // ""