prototypeベース in javascript

Post on 26-Jun-2015

947 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

プロトタイプベース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()

おわり

top related