日々のメモ帳

プログラミングで学んだ事や趣味でやっている事などを記録しています。

JavaScriptの勉強 5日目(プロトタイプ)

 暑い……今回書いたプログラムはGitHubの「シャッフル.html」です。

 

 ◆プロトタイプとは

 

 JavaScriptで文字列を作ると、charAt()メソッドを使って該当する場所の文字が取得できます。

var  str  =  "Hello world";   //  文字列オブジェクトを作成

var  c0  =  str.charAt(0);    //  c0は"H"

var  c1  =  str.charAt(1);    //  c1は"e"

  一歩、配列を作ると、push()/pop()といったメソッドを利用してデータの出し入れができます。

var  data  =  [];             //  配列オブジェクトを作成

data.push(1);               //  "1"を追加

var  d1  =  data.pop(); //  d1は"1" 

  しかし、配列に対してcharAt()メソッドを呼び出すことはできません。反対に、文字列に対してpush()やpop()といったメソッドを呼び出すことはできません。

 

 JavaScriptでオブジェクトを生成すると、そのオブジェクトにはprototypeという見えないプロパティが暗黙のうちに追加され、そのプロパティは別のオブジェクトを参照します。例えば。以下のように文字列オブジェクトを作成したとします。

var  str0  =  new  String("Hello");

var  str1  =  new  String("World");

 すると、このstr0、str1オブジェクトはまったく別のオブジェクトなのにprototypeの参照先は同一になります。

 

 prototypeへの参照を取得するメソッドは以下の通りです。

p0  =  Object.getPrototype0f(str);  

 

◆プロトタイプ継承

 

 JavaScriptではプロパティが参照された時、

・ プロパティがそのオブジェクトで定義されていれば、そのプロパティを参照する

・ 定義されていなければprototypeで参照される先のオブジェクトで同じことを行う

という動作をprototypeが辿れなくなるまで繰り返します。

 

◆プロトタイプの利点

 

 ▼過去の資産を活用できる

 ▼メモリ消費量が少ない

 ▼修正箇所を限定できる