2016-08-25 5 views

答えて

4

これは技術的に可能です(これはいくつかのハッキングを必要としますが、ここでは書きません)が、実際にはこれをしたくありません。ここに理由があります。

newオペレータは、その__proto__オペランドのprototype新しいオブジェクト(ない関数)を作成します。つまり、new演算子によって返された呼び出し可能なものを、おそらく以外のコンストラクタから明示的に戻さない限り、呼び出すことはできません。

しかし、あなたは、コンストラクタの外に何かを返す場合、thing instanceof SomeThingfalseになるだろう、とあなたはthingからクラスのprototypeメソッドを使用できるようにするつもりはありません。その時点では、実際にはclassのような振る舞いではなく、ちょうど工場を持っているほうがよいでしょう。関数は、何でもしてもかまいません。

+2

@ Ryanの優れた答えに追加する:あなたがしようとしていることを達成するために「クラス」は必要ありません。別の 'function'を返す' function'を作成することができます。必要ならば、[closure](https://developer.mozilla.org/ja/docs/Web/JavaScript/Closures)(外部関数)を使用して、追加の設定を "保存"することができます。 –

関連する問題