Javascript 在JS中使用Array.from()
我对JavaScript中的Array.from()有点困惑。我知道/认为这会将类似数组的值转换为数组,但为什么,如果数组是一个对象,我们不必在使用它之前使用“new”关键字来实例化它?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
数组是一个函数,函数是对象,对象有属性<“代码>来自”
只是该对象上的一个属性。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
类本身的静态方法。