JavaScript を書き始める前に知っておきたい JavaScript のこと #02
by
Kotaro Chiba
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
JavaScript を書き始める前に知 っておきたい JavaScript のこと #02 Kanazawa.js Remote Meetup #03 千葉 弘太郎 1 1
Slide 2
Slide 2 text
千葉 弘太郎(ちば こうたろう) Kotaro Chiba Twitter: @ur_uha Github: uruha Work: DMM.com LLC 2 2
Slide 3
Slide 3 text
前回 JavaScript を書き始める前にやっておきたいこと 3 3
Slide 4
Slide 4 text
今回 「ざっくり知る」JavaScript の prototype について 4 4
Slide 5
Slide 5 text
const arrayInstance = ['hello', 'world']; arrayInstance.join(); // => 'hello,world' 5 5
Slide 6
Slide 6 text
なぜ使えるのか?(考えたことあります?) 本来 arrayInstance には join メソッドは無いはず...(´・ω・`) 6 6
Slide 7
Slide 7 text
原理 prototype を辿って(プロトタイプチェーン)、 Array.prototype.join() メソッドを使っている。 7 7
Slide 8
Slide 8 text
Array() ──────── Array.prototype [prototype] [constructor, join, ...] │ │ arrayInstance は prototype を探しに⾏く │ │ └ instance → arrayInstance ['hello', 'world'] 8 8
Slide 9
Slide 9 text
また、 Array.prototype は Object() の instance、 Object.prototype へチェーンが続きます 9 9
Slide 10
Slide 10 text
Object.prototype │ │ Array() ──────── Array.prototype [prototype] [constructor, join, ...] │ │ │ │ └ instance → arrayInstance ['hello', 'world'] 10 10
Slide 11
Slide 11 text
⾒てみる。 11 11
Slide 12
Slide 12 text
arrayInstance がインスタンス化される際に __proto__ という prototype をたどるためのプロパティが存在しま す。 12 12
Slide 13
Slide 13 text
このチェーンは全ての⼤元である Object() まで続きます。 13 13
Slide 14
Slide 14 text
ただ、 __proto__ は ECMA の⾮標準プロパティのため、継 承元の prototype を取得するなど実際にソースコードレベ ルで使⽤する場合は Object.getPrototypeOf を使ったほ うが良いです。 14 14
Slide 15
Slide 15 text
Object.prototype │ │ Array() ──────── Array.prototype [prototype] [constructor, join, ...] │ │ │ │ └ instance ┬→ arrayInstance ├→ arrayInstance_02 ├→ arrayInstance_03 ├→ ... また、全てのインスタンスが、共通の prototype を継承し ているのも特徴です。 15 15
Slide 16
Slide 16 text
まとめ ⾃作のオブジェクトがビルトイン/ネイティブオブジェクトの メソッドを使えるのはプロトタイプチェーンによって、継承 元のメソッドを参照しているから ⾃作のオブジェクトをインスタンス化した際に prototype プロパティが付与され遡ることができる prototype の遡りは Object まで続く 全てのインスタンスは共通の prototype を継承している 16 16
Slide 17
Slide 17 text
もっと踏み込むといろいろあるんですが、 とりあえず仕組みを理解するところまで。 17 17
Slide 18
Slide 18 text
次回予告 (参加できたら) 18 18
Slide 19
Slide 19 text
JavaScript を書き始めたら知っておきたい JavaScript のこと JavaScript についてもう少し詳しく オブジェクト指向 prototype 継承 動的型付け シングルスレッド 動的型付けやシングルスレッドらへんを喋らたら 19 19