横道にそれて、たびたびたびYコンビネータ
引数の数は1つだと不便。でもまた理解がちょっとだけ深まったかも。
しかし、速度だけ見れば、それはかなり犠牲になりそう。
<!DOCTYPE html> <title>Test</title> <body> <section> <div> <table> <tbody> <tr> <td> <em id="hoge">abc</em> </tbody> </table> </div> </section> <script> function Y (func) { var that = this; return (function (x) { return function (arg) { return func (x (x)).apply (that, arguments); }; })(function (x) { return function (arg) { return func (x (x)).apply (that, arguments); }; }); } function test (self) { return function (n, a) { return (n === 0) ? a: self (n -1, a).concat (n) }; } var result = Y (test)(5,["hoge"]); alert (result); // hoge,1,2,3,4,5 function getAncestorNodeName (self) { return function (n, a) { return (n) ? self (n.parentNode, a).concat (n.nodeName): a; }; } var result = Y (getAncestorNodeName)(document.getElementById('hoge'), []); alert (result); //#document,HTML,BODY,SECTION,DIV,TABLE,TBODY,TR,TD,EM </script>
久々に知恵袋で答えてみたら
今度は、こんなコードを上げて来た。消したスレッドに書いておいたコードの方が良かったろうに…
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1172783271
そして、「それを有料で…」って振ってきたら、取り下げるしかないだろう。
なんか、知恵袋はガッカリすることが多い。
もし有料なら、どんなコードに書く人なのだろう?