美文网首页
Function.prototype.apply()

Function.prototype.apply()

作者: black墨 | 来源:发表于2021-08-17 10:52 被阅读0次

本文不构成任何指导学习意见,记录仅供学习以及知识点查看

文章来源: 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可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 nullundefined 时会自动替换为指向全局对象,原始值会被包装。
    argsArray
    可选的。一个数组或者类数组对象,其中的数组元素将作为单独的参数传给 func 函数。如果该参数的值为 nullundefined,则表示不需要传入任何参数。
  • 返回值
    调用有指定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

相关文章

网友评论

      本文标题:Function.prototype.apply()

      本文链接:https://www.haomeiwen.com/subject/mrbbbltx.html