プロトタイプベース
      in
  JavaScript
      Dev3 丸山亮(maruyama-r)
JavaScriptおさらい

Webブラウザで動く言語

サーバサイドで使われることもある

プロトタイプベースである
JavaScriptは
プロトタイプベースだ!
プロトタイプベースって?
Wikipedia様から引用

プロトタイプベースのオブジェクト指向言語は一
般的なオブジェクト指向言語とは対照的に、静的
なクラスを持たず、新しいオブジェクトを既存の
  オブジェクトのクローンから作成する。



 http://ja.wikipedia.org/wiki/プロトタイプベース
???
Stringオブジェクトの拡張

文字列の末尾に www をつける機能

 こんにちは → こんにちはwww

 PHPやJavaだと warosu( こんにちは );

 JavaScriptなら こんにちは .warosu();
なぜこんなことが
 できるのか?
なぜできるのか?

JavaScriptのオブジェクトはいつでも・どれでも
変更可能

JavaScriptのオブジェクトは他のオブジェクトを
参照している(プロトタイプ)
クラスベースだと、”オブジェクト”とは
  ことなる静的な”クラス”を参照する

         Stringの
          クラス




オブジェクト   オブジェクト    オブジェクト
こんにちは    さようなら      また明日
ここにプロパティ追加すると
参照しているオブジェクト全てに反映!!

         Stringの
     プロトタイプオブジェクト




オブジェクト   オブジェクト    オブジェクト
こんにちは    さようなら      また明日
Arrayの
         プロトタイプオブジェクト




オブジェクト       オブジェクト         オブジェクト
 [1, 2, 3]    [-1, 10, 2]   [0, 0, 100]


        実はここにも追加可能!
特定の配列を拡張


数値配列の中で一番大きな数値を返す

[10, 11, -5] → 11
JavaScriptの全体像は?
object




string              number             array




         function            boolean
全てのオブジェクトを拡張

すべてのオブジェクトに挨拶をさせる

true.hello()

10.hello()

[1, 2, 3].hello()
おわり

Prototypeベース in JavaScript