スポンサーリンク
前回、関数もオブジェクトである。と軽く触れましたが、関数の初期化と使い方について、書きます。
たとえば、自動車というモノがあったとします。
同じエンジン、同じ車体で、色だけ違う自動車を作りたい。
エンジンがV型10気筒、車体がフェラーリだとします。
色は、赤、緑、青の3台を作る。これをオブジェクトにするなら、
car_red={ engine:'V10', chassis:'ferrari', color:'red' } car_green={ engine:'V10', chassis:'ferrari', color:'green' } car_blue={ engine:'V10', chassis:'ferrari', color:'blue' }
と、なります。
しかし、この3つ、赤字の部分以外は、全く同じです。
関数もオブジェクトなので、これを関数化して、自動で初期化させるようにします。
関数による初期化
詳細は後述しますので、先にソースを書きます。
var car = function(color){ this.engine = 'V10'; this.chassis: = 'ferrari'; this.color = color; } var car_red = new car('red'); var car_green = new car('green'); var car_blue = new car('blue');
引数
functionのあとの(と)の間にcolorとあります。これは、引数といって、関数に与える値です。
関数には、値を指定できます。たとえば、次の関数の場合、
var car = function(color){
this.color = color;
}
car(‘red’)とすれば、this.colorはredになり、car(‘green’)とすれば、this.colorはgreenです。
では、thisとは何でしょう。thisは自分自身です。
this
前回、下の2つは同じであると説明しました。
obj = { engine:'V10', chassis:'ferrari' }
obj = {}; obj.engine='V10'; obj.chassis='ferrari';
thisというのは、自分自身です。だから、下の2つは同じ意味です。
var car = function(color){ this.engine = 'V10'; this.chassis: = 'ferrari'; this.color = color; }
var car = {}; car.engine = 'V10'; car.chassis: = 'ferrari'; car.color = color;
new
関数を使って、オブジェクトを作る時は、
new function();
というふうに、書きます。
つづく
関連コンテンツ
スポンサーリンク