Function.prototype.apply()
2021-08-17 本文已影响0人
black墨
本文不构成任何指导学习意见,记录仅供学习以及知识点查看
文章来源: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
每个 JavaScript 函数实际上都是一个 Function 对象。运行 (function(){}).constructor === Function // true 便可以得到这个结论。
注意:call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。
正经解释
-apply()
方法调用一个具有给定this
值的函数,以及以一个数组(或类数组对象)的形式提供的参数。
const numbers = [5, 6, 2, 3, 7];
const max = Math.max.apply(null, numbers);
console.log(max);
// expected output: 7
const min = Math.min.apply(null, numbers);
console.log(min);
// expected output: 2
- 语法 func.apply(thisArg, [argsArray])
thisArg
必选的。在func
函数运行时使用的this
值。请注意,this
可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为null
或undefined
时会自动替换为指向全局对象,原始值会被包装。
argsArray
可选的。一个数组或者类数组对象,其中的数组元素将作为单独的参数传给func
函数。如果该参数的值为null
或undefined
,则表示不需要传入任何参数。 - 返回值
调用有指定this值和参数的函数的结果。
用 apply
将数组各项添加到另一个数组
使用push将元素追加到数组中。由于push接受可变数量的参数,所以也可以一次追加多个元素。
var array = ['a', 'b'];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]
这种场景适合将两组数组拼接为一组数组,不用循环遍历插入,超级方便,这个应该属于常用的点。
后边还有一些关于构造器之类的,需要可以去学习学习,后边我也没看懂, 原文链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/apply