Javascript 在JS中使用Array.from()

Javascript 在JS中使用Array.from(),javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我对JavaScript中的Array.from()有点困惑。我知道/认为这会将类似数组的值转换为数组,但为什么,如果数组是一个对象,我们不必在使用它之前使用“new”关键字来实例化它?数组是一个函数,函数是对象,对象有属性来自”只是该对象上的一个属性。Array是一个函数,可以通过new调用,这一事实与此无关 例如: function foo() {} foo.bar = function() { console.log('hi'); } foo.bar(); // hi 大概将fr

我对JavaScript中的Array.from()有点困惑。我知道/认为这会将类似数组的值转换为数组,但为什么,如果数组是一个对象,我们不必在使用它之前使用“new”关键字来实例化它?

数组是一个函数,函数是对象,对象有属性<“代码>来自”
只是该对象上的一个属性。
Array
是一个函数,可以通过
new
调用,这一事实与此无关

例如:

function foo() {}

foo.bar = function() {
  console.log('hi');
}

foo.bar(); // hi

大概将
from
作为属性添加到
数组
的主要原因是为其命名(而不是创建另一个全局函数)。

JavaScript有几种集合类型(HTMLCollection、NodeList、FileList、“arguments”等)。后者是包含传递给函数的所有参数的变量


您有一个函数,要求使用普通数组传递数据,在这种情况下,array.from(..)对于转换任何其他集合类型都非常有用。

谢谢。不过有一件事很简单,这可能是一个愚蠢的问题——可能是——但如果数组是一个带有方法的静态函数,这是否意味着我声明的数组也有可用的.from()方法,因为它们属于数组类型?即使在数组中使用该方法是无用的。。。我说得有道理吗?没有。数组“继承”了
Array.prototype
上定义的所有方法,而不是
Array
。将
Array.from
视为类方法。它是在类上定义的,而不是在其实例上定义的。就像我上面的例子一样,如果您执行了
var f=new foo()
f
将不具有方法
。要了解有关函数和原型的更多信息,请查看。第二个原因可能是允许子类化:-)
from
不是填充实例化数组的实例方法,而是
array
类本身的静态方法。