Array.of()
Array.of() 静态方法根据可变数量的参数创建一个新的 Array 实例,而无论参数的数量或类型如何。
试一试
console.log(Array.of("foo", 2, "bar", true));
// Expected output: Array ["foo", 2, "bar", true]
console.log(Array.of());
// Expected output: Array []
语法
js
Array.of()
Array.of(element1)
Array.of(element1, element2)
Array.of(element1, element2, /* …, */ elementN)
参数
element1, …,elementN-
用于创建数组的元素。
返回值
一个新的 Array 实例。
描述
Array.of() 和 Array() 构造函数之间的区别在于对单个参数的处理:Array.of(7) 创建一个包含单个元素 7 的数组,而 Array(7) 创建一个空数组,其 length 属性为 7。(这意味着一个包含 7 个空槽的数组,而不是包含实际 undefined 值的槽。)
js
Array.of(7); // [7]
Array(7); // array of 7 empty slots
Array.of(1, 2, 3); // [1, 2, 3]
Array(1, 2, 3); // [1, 2, 3]
Array.of() 方法是一个通用的工厂方法。例如,如果 Array 的子类继承了 of() 方法,则继承的 of() 方法将返回子类的实例而不是 Array 实例。事实上,this 值可以是任何接受单个参数(表示新数组的长度)的构造函数,该构造函数将使用传递给 of() 的参数数量来调用。在所有元素都分配完毕后,最终的 length 将被重新设置。如果 this 值不是构造函数,则使用普通的 Array 构造函数。
示例
使用 Array.of()
js
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
在非数组构造函数上调用 of()
of() 方法可以被调用在任何接受单个参数(表示新数组的长度)的构造函数上。
js
function NotArray(len) {
console.log("NotArray called with length", len);
}
console.log(Array.of.call(NotArray, 1, 2, 3));
// NotArray called with length 3
// NotArray { '0': 1, '1': 2, '2': 3, length: 3 }
console.log(Array.of.call(Object)); // [Number: 0] { length: 0 }
当 this 值不是构造函数时,将返回一个普通的 Array 对象。
js
console.log(Array.of.call({}, 1)); // [ 1 ]
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-array.of |
浏览器兼容性
加载中…