jQueryをカリー化するスクリプトCurryQuery
var CurryQuery = function (element) { var original = $(element), slice = Array.prototype.slice, current; return recursive; function recursive(method) { var arg = slice.call(arguments, 1); if (typeof method === 'undefined') { return recursive; } if (typeof current !== 'undefined') { current = current[method].apply(current, arg); } else { current = original[method].apply(original, arg); } return recursive; }; };これは使い方、というか書き換え方です。jQueryの書き方が次のようになります。
//従来の書き方 $('#hoge').css({backgroundColor: '#F00', left: 0, width: 200}).animate({left: 300, width: 50}, 2000); //CurryQueryの書き方 CurryQuery('#hoge')('css', {backgroundColor: '#F00', left: 0, width: 200})('animate', {left: 300, width: 50}, 2000);この例ですと短いので分かりにくいですが、長大なメソッドチェーンのコードを書く場合などは、CurryQueryを用いた方がコードの見通しがよくなるような気がします。ただ、本当にカリー化を使っているのかと言われると少し怪しいですが。。。
//カリー化してるっぽい書き方 CurryQuery('#hoge')('css', {backgroundColor: '#F00', left: 0, width: 200})('animate', {left: 300, width: 50}, 2000) ('hide', 500)('show', 500) ('hide', 500)('show', 500) ('animate', {left: 0, width: 200}, 1000)('hide', 500);このスクリプトは次のような人に向いています ・なんちゃってカリー化に興味がある人 ・jQueryのメソッドチェーンを多用しているが、行頭に現れるドッドが気持ち悪い、どうにも気持ち悪くてたまらない、でも行末のドットはさらに気持ち悪いと感じている人 ・CurryQuery(‘#hoge’)()()()()()()()()()()()()(‘hide’, 1000);みたいな意味不明なコードを書いて人々を驚かせたい人