20
プロトタイプベース in JavaScript Dev3 丸山亮(maruyama-r)

Prototypeベース in JavaScript

Embed Size (px)

Citation preview

Page 1: Prototypeベース in JavaScript

プロトタイプベースin

JavaScriptDev3 丸山亮(maruyama-r)

Page 2: Prototypeベース in JavaScript

JavaScriptおさらい

Webブラウザで動く言語

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

プロトタイプベースである

Page 3: Prototypeベース in JavaScript

JavaScriptはプロトタイプベースだ!

Page 4: Prototypeベース in JavaScript

プロトタイプベースって?

Page 5: Prototypeベース in JavaScript

Wikipedia様から引用

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

http://ja.wikipedia.org/wiki/プロトタイプベース

Page 6: Prototypeベース in JavaScript

???

Page 7: Prototypeベース in JavaScript
Page 8: Prototypeベース in JavaScript

Stringオブジェクトの拡張

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

‘こんにちは’ → ‘こんにちはwww’

PHPやJavaだと

JavaScriptなら

warosu(‘こんにちは’);

‘こんにちは’.warosu();

Page 9: Prototypeベース in JavaScript

なぜこんなことができるのか?

Page 10: Prototypeベース in JavaScript

なぜできるのか?

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

JavaScriptのオブジェクトは他のオブジェクトを参照している(プロトタイプ)

Page 11: Prototypeベース in JavaScript

オブジェクト‘こんにちは’

オブジェクト‘さようなら’

オブジェクト‘また明日’

Stringのクラス

クラスベースだと、”オブジェクト”とはことなる静的な”クラス”を参照する

Page 12: Prototypeベース in JavaScript

オブジェクト‘こんにちは’

オブジェクト‘さようなら’

オブジェクト‘また明日’

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

ここにプロパティ追加すると参照しているオブジェクト全てに反映!!

Page 13: Prototypeベース in JavaScript

オブジェクト[1, 2, 3]

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

オブジェクト[0, 0, 100]

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

実はここにも追加可能!

Page 14: Prototypeベース in JavaScript
Page 15: Prototypeベース in JavaScript

特定の配列を拡張

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

[10, 11, -5] → 11

Page 16: Prototypeベース in JavaScript

JavaScriptの全体像は?

Page 17: Prototypeベース in JavaScript

string number array

object

function boolean

Page 18: Prototypeベース in JavaScript
Page 19: Prototypeベース in JavaScript

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

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

true.hello()

10.hello()

[1, 2, 3].hello()

Page 20: Prototypeベース in JavaScript

おわり