More Related Content
PDF
Cookpad Summer Intern 2015 - Programming Paradigm PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0) PPTX
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる PDF
TypeScript & 関数型講座 第2回 TypeScript という言語 PDF
js-ctypes - ネイティブコードを呼び出す新しいカタチ PDF
PPTX
Effective Java 輪読会 項目49-52 What's hot
PDF
第三回ありえる社内勉強会 「いわががのLombok」 PDF
PPTX
PDF
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ PDF
PDF
PDF
PDF
PDF
TypeScript & 関数型講座 第3回 関数型入門 PDF
PDF
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14) PDF
PPTX
基礎構文班 11回目 ファイル入出力 型変換 問題やる回 ODP
On Lisp読書会2014 第3回「第2章 関数 (つづき)」 PDF
PPTX
PPTX
PDF
20161004 DMM/エウレカ/インテリジェンス合同勉強会 PDF
Similar to Javascript勉強会資料1
PDF
ECMAScript6による関数型プログラミング PDF
PPT
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門 PDF
最強オブジェクト指向言語 JavaScript 再入門! PDF
これからのJavaScriptー関数型プログラミングとECMAScript6 PDF
PDF
ちょっと詳しくJavaScript 第3回【prototype】 PDF
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script PDF
PDF
PDF
JavaScriptおよびXPages Vote技術解説 PDF
Prototypeベース in JavaScript PPTX
PDF
PDF
PDF
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜 PDF
PDF
ECMAScript 6 Features(PDF 版) PDF
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter03. 〜 prototype?編 〜 PPTX
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト Javascript勉強会資料1
- 1.
- 2.
• 今回の目的
• Prototypeの理解を通じて、
プロトタイプベース志向言語を理解する
・オブジェクトを生成する
コンストラクタ機構
・二つの参照
・Prototype 継承と this の挙動
・オーバーライド
- 3.
- 4.
• Return文を入れなくても
生成されたオブジェクトが返されている
・・・newしないで呼び出された場合、
return文のない関数オブジェクト
なので何も返さない。Study_07_02.js
- 5.
• 二つの参照
・そもそも、全ての関数は
prototypeプロパティをもつ
(explicit prototype property)
継承元MyClassの__proto__,
hasOwnProperty,toString等をもつ
study_07_03.js
- 6.
- 7.
• プロトタイプチェーンの参照の順序
オブジェクト自身のプロパティ
→継承元のプロパティ
→継承元オブジェクトの継承元プロパティ
…Object.prototype まで検索して終了。
- 8.
- 9.
• 暗黙リンクを参照するのは読み取り時
のみで、代入や削除時は参照されない。
・ では、objA.prop1 = 100; 後の
プロパティ prop1 は何か?
→ 代入時に objA そのものに プロパティ prop1
が生成されている。 study_07_05.js
(hasOwnPropertyメソッドで、オブジェクト自身に
プロパティがあることが確認できる。)
- 10.
・メソッドのオーバーライド
・オーバーライドとは…
→スーパークラスで定義されたメソッド
をサブクラスで定義し直し、
動作を上書きすること。
「クラスからクラスへの継承」
(多重定義、とは違います)Study_07_06.js
クラスの概念がないjavascriptの中で、
クラスの機能を実現できる
- 11.
• Prototype 継承とthis の挙動
study_07_07.js
・this について
「実行中」のオブジェクトが
「自分自身」を表すオブジェクトに
アクセスするためのキーワード
study_07_08.js
・実行中のオブジェクトは naming なので、
this は naming をさす。
このとき、 this.name は naming.nameと等しい。
- 12.
• 2番目の例だと、実行中のオブジェクトは
takemoto なので、 this は takemoto をさす。
なので、who 内部の this.nameは
takemoto.name のこと。
・ 関数内のトップレベル(プロパティ内でな
い)
で this を呼び出すと、
グローバルオブジェクトをさす。
・このように、 this が何をさすかは
「関数の呼び出し方」で決まる。
- 13.
• 実用例
PositionedRectangle.prototype.rectangle =new Rectangle(2,3);
→ new を使うと、コンストラクタ関数
を呼び出し、その this を戻り値として返す。
PositionedRectangle.prototype.rectangle.area();
→ this は 継承元の Rectangle をさしている。
PositionedRectangle.prototype.rectangle には
Rectangle(2,3); の this が挿入されている。
プロパティ area() の実行主は
PositionedRectangle.prototype.rectangle であるた
め、 area(); 内の this は Rectangle(2,3); と同一。
- 14.
• 一つ注意すべきなのは、new演算子で呼び
出されるコンストラクタ関数では return
を明記すべきでない。
study_07_09.js
instanceof 演算子 ・・・ 左辺が右辺のインスタンスであるか判定
・戻り値はオブジェクトに限定される。
プリミティブ型を return に指定した場合
は、
this が返される。
※そもそも、javascript において new は使うべきではない。
詳しくは、
JavaScriptのnewって本当にいらない子?
http://taiju.hatenablog.com/entry/20090706/1246840565
- 15.
• 課題
〜 注文の計算 〜
スタバとタリーズがある。
商品はコーヒーとパンの二つ。
スタバはコーヒー400円,パン200円
タリーズはコーヒー300円,パン250円
任意の個数を入力したとき、
スタバ,タリーズそれぞれの注文の
合計金額を返すメソッドを、
プロトタイプ継承を利用して作りませう。
- 16.