プロトタイプチェーン (prototype chain) のpatternは、newを強制するpatternに等しい。class志向のdesign pattern風なjQuery式と、素直なJavaScript風な『JavaScriptパターン ―優れたアプリケーションのための作法』式がある。jQuery式は、葬られればいいと思う。
jQuery式
function chain(arg) { return new chain.fn.init(arg); } chain.fn = chain.prototype = { init: function(arg) { this.arg = arg; return this; }, hai: function(arg) { return this.arg + arg; }, yeah: function(arg) { this.arg = this.hai(arg); return this; } }; chain.fn.init.prototype = chain.fn; chain('go') .yeah('lol') .hai('fix');
『JavaScriptパターン』式
function chain(arg) { if (!(this instanceof chain)) { return new chain(arg); } this.arg = arg; return this; } chain.prototype = { hai: function(arg) { return this.arg + arg; }, yeah: function(arg) { this.arg = this.hai(arg); return this; } }; chain('go') .yeah('lol') .hai('fix');