说明
使用apply()方法调用函数,同时指定被调用函数中this的值。
语法:
fun.apply(thisArg, [argsArray])
参数:
- thisArg:在fun函数运行时指定的this值
- argsArray:传递的参数值,必须包含在数组里面
返回值:就是函数的返回值,因为它就是调用函数。
apply函数的主要应用场景:主要跟数组有关系,比如跟apply函数结合,使用Math.max()求数组的最大值。
call和apply的区别:
- 都是调用函数,都能改变this的指向。
- 参数不同,apply传递的必须是数组,而call传递普通的参数。
示例
改变this指向
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const obj = {
age: 18
}
function fn(x, y) {
console.log(this)
console.log(x + y)
}
// 调用函数
// 改变this指向
fn.apply(obj, [1, 2])
// 返回值就是原先函数的返回值
</script>
</body>
</html>
求数组最大值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 求数组最大值
const max = Math.max.apply(null, [1, 2, 3])
console.log(max)
</script>
</body>
</html>