このような変数を定義するとします
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 演算子なしでメソッドを呼び出すことができます。したがって、メソッドを呼び出す前に新しい演算子またはオブジェクト作成手法が必要なクラスはこれだけですか。
編集: Date() は文字列型であるため、オブジェクトを作成せずにメソッドを呼び出す必要があります。文字列型はオブジェクトのように振る舞うからです。では、なぜですか?
編集2new Date()
:これは、他の機能(Array(), String(), Error()
など)と同じにすることができない唯一のコア機能だと思います。というわけで、これもこの言語の隠れた機能か ECMAScript の間違いです。