【问题标题】:How is a constructor with infinite arguments made?具有无限参数的构造函数是如何产生的?
【发布时间】:2016-03-31 13:04:57
【问题描述】:

我在看newboston的《初学JavaScript教程 - 28 - 数组》,看到他使用new Array()方法创建了一个数组; 我的第一个想法是 Array() 就像一个构造函数,可以接受大量(如果不是无限量)参数。 我的问题是,如何制作这样一个可以接受无限数量参数的构造函数? 你有成千上万的构造函数吗? (那将是一项没人愿意做的工作。)

这是一个例子:

var names = new Array('John', 'Mary', 'Thomas', 'Sara');

在这里,我创建了一个只有 4 个参数的数组,但如果我是正确的,我可以在这个数组中存储数千个名称。 再说一次,你如何制作这样一个可以接受很多参数的构造函数?

提前谢谢你。

【问题讨论】:

  • Array() 实际上是一个可以接受大量参数的构造函数。 JavaScript 中的所有函数都可以使用任意数量的参数调用,而不管函数是如何声明的。在这方面,该语言与许多其他常用语言明显不同。

标签: javascript arrays arguments


【解决方案1】:
function logArgs() {
    console.log(arguments);
}
logArgs(1, 2, 3); //=> [1, 2, 3]

arguments 是一个类似数组的对象,包含传递给函数的所有参数。

当然,Array 构造函数很可能是本机实现的,但这是您可以创建自己的类似函数/构造函数的方法。

有关详细信息,请参阅the MDN doc page on arguments

【讨论】:

  • 我现在明白了。谢谢
  • 需要注意的一点是,在 ES2015 中,您可以使用 rest parameter 来获取实际的 Array 实例,而不是像 Object 这样的 Array。 function logArgs(...args) { console.log(args); }
【解决方案2】:

无论如何,在一个数组中传递所有参数是一种好习惯。并会解决你的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2015-02-03
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多