Upload
ryo-maruyama
View
945
Download
3
Embed Size (px)
Citation preview
プロトタイプベースin
JavaScriptDev3 丸山亮(maruyama-r)
JavaScriptおさらい
Webブラウザで動く言語
サーバサイドで使われることもある
プロトタイプベースである
JavaScriptはプロトタイプベースだ!
プロトタイプベースって?
Wikipedia様から引用
プロトタイプベースのオブジェクト指向言語は一般的なオブジェクト指向言語とは対照的に、静的なクラスを持たず、新しいオブジェクトを既存のオブジェクトのクローンから作成する。
http://ja.wikipedia.org/wiki/プロトタイプベース
???
Stringオブジェクトの拡張
文字列の末尾に‘www‘をつける機能
‘こんにちは’ → ‘こんにちはwww’
PHPやJavaだと
JavaScriptなら
warosu(‘こんにちは’);
‘こんにちは’.warosu();
なぜこんなことができるのか?
なぜできるのか?
JavaScriptのオブジェクトはいつでも・どれでも変更可能
JavaScriptのオブジェクトは他のオブジェクトを参照している(プロトタイプ)
オブジェクト‘こんにちは’
オブジェクト‘さようなら’
オブジェクト‘また明日’
Stringのクラス
クラスベースだと、”オブジェクト”とはことなる静的な”クラス”を参照する
オブジェクト‘こんにちは’
オブジェクト‘さようなら’
オブジェクト‘また明日’
Stringのプロトタイプオブジェクト
ここにプロパティ追加すると参照しているオブジェクト全てに反映!!
オブジェクト[1, 2, 3]
オブジェクト[-1, 10, 2]
オブジェクト[0, 0, 100]
Arrayのプロトタイプオブジェクト
実はここにも追加可能!
特定の配列を拡張
数値配列の中で一番大きな数値を返す
[10, 11, -5] → 11
JavaScriptの全体像は?
string number array
object
function boolean
全てのオブジェクトを拡張
すべてのオブジェクトに挨拶をさせる
true.hello()
10.hello()
[1, 2, 3].hello()
おわり