JavaScriptで、通常どおりに呼び出された場合と、新しいインスタンスを作成するために呼び出された場合とで動作が異なる関数が必要です。2つの機能が関連している場合と関連していない場合がある場合、さまざまな用途が考えられます。new
関数が常に新しいインスタンスを作成するために使用される場合、1つの使用法は、コーダーが入力する必要がないようにすることです。
function MyClass(arg1, arg2) {
if(/* not called with "new" */) return new MyClass(arg1, arg2);
// instance initialization stuff here...
}
このように入力する必要はありません。入力var x = new MyClass(arg1, arg2)
するだけで十分ですvar x = MyClass(arg1, arg2)
(ただし、前者も間違っていません)。
可能な使用法のほんの一例。
これはできますか?もしそうなら、どのように?