在 JavaScript 中,handler.apply() 方法允许你调用具有特定参数和上下文的函数(其工作方式类似于函数调用的陷阱)。它用于调用函数,但也允许除此值外还指定参数数组。当您想要以特定对象作为上下文调用函数时,或者当您有一个要传递给函数的参数数组时,这特别有用。此方法类似于 call() 方法,但我们可以传递参数数组,而不是传递单个参数。
语法
以下是 JavaScript handler.apply() 方法的语法 -
new Proxy(target, {
apply(target, thisArg, argumentsList) {}
});
参数
- target − 保存目标对象。
- thisArg − 调用的 this 参数。
- argumentsList − 它包含调用的参数列表。
返回值
此方法返回可以返回任何值。
示例 1
让我们看看下面的例子,我们将使用包含要传递给 add 函数的参数的数组,然后使用 apply() 调用该函数。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
function add(a, b) {
return a + b;
}
const x = [22, 11];
const y = add.apply(null, x);
document.write(y);
</script>
</body>
</html>
示例 2
考虑另一个场景,我们将在不同上下文中调用一个函数。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
const x = {
car: 'Audi Q6',
greet: function() {
return 'Ford ' + this.car;
}
};
const y = {
car: 'Mustang'
};
const a = x.greet.apply(y);
document.write(a);
</script>
</body>
</html>
示例 3
在下面的示例中,我们将数组的所有元素作为单个参数传递给函数。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
function sum() {
const x = Array.from(arguments);
return x.reduce((acc, val) => acc + val, 0);
}
const y = [10, 20, 30, 40, 50];
const result = sum.apply(null, y);
document.write(result);
</script>
</body>
</html>
当我们执行上述脚本时,会弹出输出窗口,在网页上显示总和。
示例 4
下面是一个示例,我们将通过调用 Math.max 并将数组作为参数来查找数组中的最大值。
<html>
<style>
body {
font-family: verdana;
color: #DE3163;
}
</style>
<body>
<script>
const x = [11, 222, 3, 412];
const result = Math.max.apply(null, x);
document.write(result);
</script>
</body>
</html>
在执行上述脚本时,将弹出输出窗口,显示网页上数组中的最大数字。