再入門
ちょっとqiita.com
をみてJavaScriptに再入門した。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <title>mediator</title> </head> <body> <div id="results"></div> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="js/mediator.js"></script> </body> </html>
- //url.jsがポイント
- jsはおしりに持ってきましょう。
/** * use strictを覚えた * 関数単位で宣言することが望ましいらしい */ "use strict"; /** * window.onloadを覚えた */ window.onload = function(){ }; /** * プロトタイプベースのオブジェクト志向 */ function ObserversList(){ this.handlers = []; } ObserversList.prototype = { add : function(obj){ this.handlers.push(obj); } }; var hoge = new ObserversList(); /** * キー入力を取得する取っ掛かりを得た */ window.onkeypress = mediator.keypress; function mediator(){} mediator.prototype = { keypress: function(e){ e = e || window.event; // ID if (e.which === 49){ // key "1" mediator.players.home.play(); return; } if (e.which === 48){ // key "0" mediator.players.guest.play(); return; } } }; /** * ここはまだ理解出来てない */ //引数を切り取っている var args = Array.prototype.slice.call(arguments,0); for(var i=0,len = this.handlers.length;i<len;i++){ // apply this.handlers[i].update.apply(null,args); }
call/applyはこの辺りか。Array.prototype.method.call以外のcallはロジックを壊しそうだから使わないな。自分で作ったfunctionに使い出すと死ねそうだ。taiju.hatenablog.com
ここを読む限りそうでもないのかもqiita.com
thisを差し込めることが有効な場面もあると。qiita.com
カリー化やべぇかっこいい。
function add(x) {return function(y){return x + y;};} add(100)(299);