Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么将Array.of()应用于对象会在JavaScript/ECMAScript中创建数字_Javascript - Fatal编程技术网

为什么将Array.of()应用于对象会在JavaScript/ECMAScript中创建数字

为什么将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

我正在阅读ES规范,发现
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)
它返回一个数字对象(因为
对象
就是这样定义的)