2010/04/22

[JavaScript]applyについて

そうかーそういうことだったのかー。
ちょっと前に、applyについて触れる機会があったので、ちょっと掘り下げてみようかと。

まずは、■[WEB] JavaScriptでのthisと applyの関係とはで紹介されているプログラムを記載します。

function aContructor() {
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();

via:■[WEB] JavaScriptでのthisと applyの関係とは

当初、これを読んだ時に、prototypeを使えば、いけんじゃーないのかーっと思ったのですが、できませんでした。

何が違うのかなーっと思っていたら、

aContructor.apply(this);

に相当する処理は、オブジェクト指向でいうところの、「継承」に相当するものではないのかという結果にたどり着きました。

hoge.prototype.method_001 = function()・・・

みたいな書き方は、メソッドの登録であって、

hoge_instance = new hoge()

はインスタンス変数の宣言に相当し、確かに、継承する方法を今まで考えていなかったなーっと思いをめぐらしました。

そこで、継承のようなものを実現するために、applyが使われていると思えば、上記のプログラムに納得することができました。

しかし、つくづく思うのが、JavaScriptって奥が深いなーっと。

html version5になったらますます進化していくんだろうなー。

0 コメント:

コメントを投稿