今までcallメソッドって使ったことなかったけど、
applyとcallの使い方を丁寧に説明してみる - あと味
を見てなるほどな、と思ったので、
これでインターフェイスと実装を分けて書けるかなと思ったので書いてみた。
//インターフェイス var Fuga = function(){ var li = []; for(var i in this){ li.push(i); } return li; }; Fuga.prototype = { sum:function(a,b){}, setVar:function(g){}, pon:function(){}, }; //実装 var Hoge = function(bn){ var m =0; for(var i in this){ if(typeof this[i] == 'function'){ m++; } } if(bn.length !== m){ console.log('undefined ['+bn[bn.length-1]+'] method!'); } }; Hoge.prototype = { sum:function(a,b){ console.log(a+b); }, setVar:function(g){ console.log(g); } }; var f = new Fuga(); var h = new Hoge(f); h.sum.call(f.sum,'oh!','hatudesu'); h.setVar.call(f.setVar,'test');
全然役に立つ気がしない!
なんなんだこれは。
とりあえずcallメソッドの使い方がわかったのでよかった。