Javascriptではcallとapplyという方法で他のオブジェクトに実装された関数を借りることができるらしいので早速ためしてみた。
OOPは、物凄く乱暴にいえば主語と動詞をグループ化する。Class Calculatorがaddという関数を持つみたいな感じで。主体と行いをセットにしていくことでシステムの構造化を行うが、Javascriptでは行いをそのままで主体を差し替える事ができる。
やり方としては
var Adder = function(inX,inY){
this.x = inX;
this.y = inY;
this.add = function(){
return this.x+this.y;
};
};
var Borrower = function(inX,inY){
this.x = inX;
this.y = inY;
};
var borrower = new Borrower(3,4);
var adder = new Adder(5,6);
var result = adder.add.call(borrower);
みたいな感じ。.addという関数はAdderにしか定義されてないが.callファンクションを使うことにより、borrowerにその関数を実行させることができ、borrowerは自分の保持してるデータを使うので、resultは7になる。