そうかーそういうことだったのかー。
ちょっと前に、applyについて触れる機会があったので、ちょっと掘り下げてみようかと。
まずは、■[WEB] JavaScriptでのthisと applyの関係とはで紹介されているプログラムを記載します。
function aContructor() {
via:■[WEB] JavaScriptでのthisと applyの関係とは
this.aVal1 = 1;
this.aVal2 = 2;
this.aFun1 = function() {alert(this.aVal1);}
this.aFun2 = function() {alert(this.aVal2);}
}
function bContructor() {
aContructor.apply(this);
this.bVal = 3;
this.bFun = function() {alert(this.bVal);}
}
var x = new bContructor();
alert(x.aVal1);
alert(x.aVal2);
alert(x.bVal);
x.aFun1();
x.aFun2();
x.bFun();
当初、これを読んだ時に、prototypeを使えば、いけんじゃーないのかーっと思ったのですが、できませんでした。
何が違うのかなーっと思っていたら、
aContructor.apply(this);
に相当する処理は、オブジェクト指向でいうところの、「継承」に相当するものではないのかという結果にたどり着きました。
hoge.prototype.method_001 = function()・・・
みたいな書き方は、メソッドの登録であって、
hoge_instance = new hoge()
はインスタンス変数の宣言に相当し、確かに、継承する方法を今まで考えていなかったなーっと思いをめぐらしました。
そこで、継承のようなものを実現するために、applyが使われていると思えば、上記のプログラムに納得することができました。
しかし、つくづく思うのが、JavaScriptって奥が深いなーっと。
html version5になったらますます進化していくんだろうなー。
0 コメント:
コメントを投稿