JavaScriptでライブラリを提供するときに、クラスをnewさせるのでなくファクトリー関数を使わせるのは最近の流行なのでしょうか?
例えばLeafletというライブラリでは、Mapクラスのインスタンスを作るときに
new L.Map('map');
という書き方もできますが
L.map('map');
というファクトリー関数も用意しています。その中身は
L.map = function (id, options) { return new L.Map(id, options); };
とnewして返しているだけです。
このようなファクトリー関数が全てのクラスに対して用意されています(中身はほぼnewして返すだけですが、一部微妙に違うものもあるようです)。
http://leafletjs.com/reference.html#class
上記の「Class Factories」参照。
「JavaScript new factory」でググってみるとこのようなページが見つかり、Eric Elliottという人がやたら熱心に推奨しています。
http://stackoverflow.com/questions/8698726/constructor-function-vs-factory-functions
http://ericleads.com/2012/09/stop-using-constructor-functions-in-javascript/
ファクトリー関数を作った方が抽象度が上がるというのは分かるのですが、いくらなんでも全てのクラスに対してこうするのは無駄な気がしますし、他の言語でこのようなことをしているのは見たことがありません。
何かJavaScript特有の理由があったりするのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/29 03:36