Edited at

Javascriptでnew 演算子でも普通の関数としても呼び出せるコンストラクタの作り方

JavascriptのちょっとしたHackyなコードです。

Person(name, age)でも呼べるし new Person(name, age)とも呼べるような関数の作成方法です。


コード

function Person(name, age) {

if(!(this instanceof Person)) return new Person(name, age);
this.name = name
this.age = age
}


考え方

コンストラクタとして呼び出されたら普通に処理。

関数として呼び出されたらコンストラクタ呼び出しとして呼びだし直す。