关键字是如何工作的new
?
做了一些测试,但没有发现任何明智的。
这一切都始于我发现的这段代码。
const
pattern = ['A','B'],
times = 5,
result = Array(times).fill(pattern).flat();
console.log(...result); // A B A B A B A B A B
为什么这里没有使用关键字new
?出于好奇,我使用了,但结果并没有改变。
const
pattern = ['A','B'],
times = 5,
result = new Array(times).fill(pattern).flat();
console.log(...result); // A B A B A B A B A B -> тоже самое что и наверху
这很有趣。
这里还有一些测试。
const a = new Array(); // -> a === []
const b = new Array; // -> b === []
const c = Array(); // -> c === []
这个怎么运作?
普通函数可以创建对象。如果这些函数大写,它们看起来就像一个类。他们不需要
new
工作,他们已经创建了一个对象,例如:这是
new
创建完全相同的对象所需的类函数:Array 函数的工作方式相同。或者例如一个
Error
可以有new
或没有它的标准函数,在任何情况下它都会创建一个错误对象。但并非所有函数在类或简单函数模式下都以相同的方式工作。可能存在细微差别或很大差异。例如,标准函数
Date
withoutnew
返回一个日期字符串,而 with 返回一个日期new
对象。new
总是意味着结果将是这个类的一个实例,也就是一个对象。不是像字符串或数字这样的原始值。因为它new
创建了一个新对象,并且它右边的函数用属性填充了这个对象。相反,一个函数,无论它是用什么字母编写的,都可以返回任何东西,而不仅仅是对象。
PS 数组是对象。不是真的,但他们通常这么说,这意味着它们像对象一样“通过引用传递”,并且表现得像一个带有属性的盒子。