假设我定义了一个这样的变量
var today = Date();
console.log(today.getMonth()); // Throw Error
而其他类如 Error 类在没有 new 运算符的情况下调用它们的方法。
function factorial(x) {
if(x <= 1)
throw Error("x must not be negative");
return x*factorial(x-1);
}
包装对象(数字、布尔值、字符串)也可以在没有 new 运算符的情况下调用它们的方法。那么,这是唯一一个在调用其方法之前需要 new 运算符或任何对象创建技术的类吗?
编辑:由于 Date() 是一个字符串类型,所以它应该在不创建对象的情况下调用它们的方法。因为字符串类型的行为就像它们是对象一样。那为什么不呢?
编辑2:我认为这是唯一不能与new Date()
其他功能(Array(), String(), Error()
等)相同的核心功能。因此,这也是这种语言的隐藏特性或 ECMAScript 错误。