为什么将Array.of()应用于对象会在JavaScript/ECMAScript中创建数字
我正在阅读ES规范,发现为什么将Array.of()应用于对象会在JavaScript/ECMAScript中创建数字,javascript,Javascript,我正在阅读ES规范,发现Array.of()使用this创建一个新实例 注2:函数的是一种有意采用的通用工厂方法;它不要求它的这个值是数组构造函数。因此,它可以传输到其他构造函数,也可以由其他构造函数继承,这些构造函数可以用单个数值参数调用 然后,我尝试使用对象作为此创建,如下所示。但是,它创建Number实例,而其他类似Date、RegExp或my Class的类创建自己的实例 const arr = Array.of.apply(Object, ['Hey']); console.log
Array.of()
使用this
创建一个新实例
注2:函数的是一种有意采用的通用工厂方法;它不要求它的这个值是数组构造函数。因此,它可以传输到其他构造函数,也可以由其他构造函数继承,这些构造函数可以用单个数值参数调用
然后,我尝试使用对象
作为此
创建,如下所示。但是,它创建Number
实例,而其他类似Date
、RegExp
或my Class的类创建自己的实例
const arr = Array.of.apply(Object, ['Hey']);
console.log(arr instanceof Number); // => true
console.log(Object.prototype.toString.apply(arr)); // => '[object Number]'
为什么这arr
不是Object
的实例,而是Number
规范:来自规范:
4. If IsConstructor(C) is true, then
a. Let A be ? Construct(C, « len »).
假设C
是对象
,并且将一个参数传递给Array.of
,这与
new Object(1)
它返回一个数字对象(因为对象
就是这样定义的)