JavaScriptにおけるオブジェクト指向を学んでいます。
PHPにおけるオブジェクト指向は一通り学び理解しておりましたが、JavaScriptに置き換わるといまいち理解できずにいます。
現在学んでいるのは、プロトタイプ、オブザーバー、クロージャなどです。
書籍に書かれていた下記のサンプルコードを映し、動作を確認するまではできましたが、
実際どのように応用したらいいかがイメージできておりません。
このコードだけですと、引数に渡された値をlistenersに代入し、代入されたものをtriggerで実行するだけの処理という認識で合っているでしょうか?
また、実際に処理として使っていく場合は、
このサンプルコードのように(?)、
・監視
・登録
・削除
・実行
というように、処理を切り分け行ったらよいということなのでしょうか?
雑で申し訳ありませんが、ご回答いただけますと幸いです。
JavaScript
1function Observer() { 2 this.listeners = {}; 3} 4 5Observer.prototype.on = function(event, func) { 6 if(!this.listeners[event]) { 7 this.listeners[event] = []; 8 } 9 this.listeners[event].push(func); 10} 11 12Observer.prototype.off = function(event, func) { 13 var ref = this.listeners[event], len = ref.length; 14 15 for(var i = 0; i < len; i++) { 16 var listener = ref[i]; 17 if(listener === func) { 18 ref.splice(i,1); 19 } 20 } 21} 22 23Observer.prototype.trigger = function(event) { 24 console.log(event); 25 var ref = this.listeners[event]; 26 len = ref.length; 27 28 for(var i = 0; i < len; i++) { 29 var listener = ref[i]; 30 if(typeof listener === "function") { 31 listener(); 32 } 33 } 34} 35 36var observer = new Observer(); 37var greet = function () { 38 console.log("Good morning"); 39}; 40observer.on("morning", greet); 41observer.trigger("morning"); 42 43var sayEvening = function () { 44 console.log("Good evening"); 45} 46observer.on("evening", sayEvening); 47observer.trigger("evening");
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/08 11:29 編集