使い捨て関数と使い捨てコンストラクタ
使い捨て関数
無名関数と呼ばれているけど、ここでは使い捨て関数と呼ぶ。
(function () { // 即実行される })();
コンストラクタとして?
JavaScript の new 演算子の意味: Days on the Moon
- 新しいオブジェクトを作る。
- 1 で作ったオブジェクトの Prototype 内部プロパティ (
__proto__
プロパティ) にF.prototype
の値を設定する。
F.prototype
の値がオブジェクトでないのなら代わりにObject.prototype
の値を設定する。- F を呼び出す。このとき
this
の値は 1 で作ったオブジェクトとし、引数には new 演算子とともに使われた引数をそのまま用いる。- 3 の返り値がオブジェクトならそれを返す。そうでなければ 1 で作ったオブジェクトを返す。
2は今回は関係ない(やろうと思えばarguments.callee.prototypeに設定できるけど)ので:
new function () { // オブジェクト(this)が生成される // thisとは関係のない処理... }; // thisは破棄される
もったいない
生成され、ただ破棄されるオブジェクトをなんとか活用できないか。
イベントハンドラオブジェクトとして
参考:handleEvent、addEventListener - 素人がプログラミングを勉強していたブログ
new function () { document.addEventListener('click', this, false); var count = 0; this.handleEvent = function (evt) { alert(++count); }; };
これも別にこの方法でないと駄目だとか、書きやすいだとかでもないしなあ...。
何かいい使い方はないだろうか。