Submit Search
Upload
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter03. 〜 prototype?編 〜
•
1 like
•
370 views
Y
Yukiko Tamiya
Follow
WeJS 3rdの発表資料です
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 62
Download now
Download to read offline
Recommended
はてブ未読管理
はてブ未読管理
kiki utagawa
読書会開催提案
読書会開催提案
YAMANE Toshiaki
LSTMで話題分類
LSTMで話題分類
__john_smith__
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
善弘 植木
パケット通信とInternet Protocol
パケット通信とInternet Protocol
Ken SASAKI
F#談話室(3) LT
F#談話室(3) LT
7shi
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
Kenta USAMI
F#とトランスレータ
F#とトランスレータ
7shi
Recommended
はてブ未読管理
はてブ未読管理
kiki utagawa
読書会開催提案
読書会開催提案
YAMANE Toshiaki
LSTMで話題分類
LSTMで話題分類
__john_smith__
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
善弘 植木
パケット通信とInternet Protocol
パケット通信とInternet Protocol
Ken SASAKI
F#談話室(3) LT
F#談話室(3) LT
7shi
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
Kenta USAMI
F#とトランスレータ
F#とトランスレータ
7shi
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
Yukiko Tamiya
Angularfire でのSNS構築
Angularfire でのSNS構築
Yuuta Moriyama
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Yukiko Tamiya
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
Yukiko Tamiya
we are javascript LTの資料
we are javascript LTの資料
Yuuta Moriyama
Introduction to onesocialweb protocol and API
Introduction to onesocialweb protocol and API
Laurent Eschenauer
A short introduction to the cloud
A short introduction to the cloud
Laurent Eschenauer
Onesocialweb: a platform to build mobile social applications
Onesocialweb: a platform to build mobile social applications
Laurent Eschenauer
Drones, Flying robots and Javascript
Drones, Flying robots and Javascript
Laurent Eschenauer
node.js and the AR.Drone: building a real-time dashboard using socket.io
node.js and the AR.Drone: building a real-time dashboard using socket.io
Steven Beeckman
Digital Security for Journalists
Digital Security for Journalists
Laurent Eschenauer
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
Digital transformation in other countries' governments
Digital transformation in other countries' governments
Steven Beeckman
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
Kayoko Hashi
はじめてのMilkcocoa
はじめてのMilkcocoa
Matsufuji Misako
Programación de Drones (Vehículos aéreos no tripulados)
Programación de Drones (Vehículos aéreos no tripulados)
Carlos Toxtli
Advanced programming with #nodecopter
Advanced programming with #nodecopter
Laurent Eschenauer
jQuery勉強会#4
jQuery勉強会#4
Ryo Maruyama
Getting started with ES6 : Future of javascript
Getting started with ES6 : Future of javascript
Mohd Saeed
150421 es6とかな話
150421 es6とかな話
kotaro_hirayama
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
Yukiko Tamiya
JavaScriptのパターンの話
JavaScriptのパターンの話
幸子 田宮
More Related Content
Viewers also liked
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
Yukiko Tamiya
Angularfire でのSNS構築
Angularfire でのSNS構築
Yuuta Moriyama
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Yukiko Tamiya
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
Yukiko Tamiya
we are javascript LTの資料
we are javascript LTの資料
Yuuta Moriyama
Introduction to onesocialweb protocol and API
Introduction to onesocialweb protocol and API
Laurent Eschenauer
A short introduction to the cloud
A short introduction to the cloud
Laurent Eschenauer
Onesocialweb: a platform to build mobile social applications
Onesocialweb: a platform to build mobile social applications
Laurent Eschenauer
Drones, Flying robots and Javascript
Drones, Flying robots and Javascript
Laurent Eschenauer
node.js and the AR.Drone: building a real-time dashboard using socket.io
node.js and the AR.Drone: building a real-time dashboard using socket.io
Steven Beeckman
Digital Security for Journalists
Digital Security for Journalists
Laurent Eschenauer
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
Digital transformation in other countries' governments
Digital transformation in other countries' governments
Steven Beeckman
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
Kayoko Hashi
はじめてのMilkcocoa
はじめてのMilkcocoa
Matsufuji Misako
Programación de Drones (Vehículos aéreos no tripulados)
Programación de Drones (Vehículos aéreos no tripulados)
Carlos Toxtli
Advanced programming with #nodecopter
Advanced programming with #nodecopter
Laurent Eschenauer
jQuery勉強会#4
jQuery勉強会#4
Ryo Maruyama
Getting started with ES6 : Future of javascript
Getting started with ES6 : Future of javascript
Mohd Saeed
150421 es6とかな話
150421 es6とかな話
kotaro_hirayama
Viewers also liked
(20)
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter02. 〜 デバッグ編 〜
Angularfire でのSNS構築
Angularfire でのSNS構築
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
Milkcocoa + gmaps.jsで、バーチャルサバゲを作ってみた
we are javascript LTの資料
we are javascript LTの資料
Introduction to onesocialweb protocol and API
Introduction to onesocialweb protocol and API
A short introduction to the cloud
A short introduction to the cloud
Onesocialweb: a platform to build mobile social applications
Onesocialweb: a platform to build mobile social applications
Drones, Flying robots and Javascript
Drones, Flying robots and Javascript
node.js and the AR.Drone: building a real-time dashboard using socket.io
node.js and the AR.Drone: building a real-time dashboard using socket.io
Digital Security for Journalists
Digital Security for Journalists
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Digital transformation in other countries' governments
Digital transformation in other countries' governments
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
IoT超初心者がMilkcocoaからラズベリーパイに遠隔Lチカしてみた
はじめてのMilkcocoa
はじめてのMilkcocoa
Programación de Drones (Vehículos aéreos no tripulados)
Programación de Drones (Vehículos aéreos no tripulados)
Advanced programming with #nodecopter
Advanced programming with #nodecopter
jQuery勉強会#4
jQuery勉強会#4
Getting started with ES6 : Future of javascript
Getting started with ES6 : Future of javascript
150421 es6とかな話
150421 es6とかな話
Similar to JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter03. 〜 prototype?編 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
Yukiko Tamiya
JavaScriptのパターンの話
JavaScriptのパターンの話
幸子 田宮
わかる LT@2
わかる LT@2
Shingo Inoue
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
Eric Sartre
eSys01krtt
eSys01krtt
kurotatu
オブジェクト指向を完全に理解していない人がオブジェクト指向をモビルスーツに例えて話してみる
オブジェクト指向を完全に理解していない人がオブジェクト指向をモビルスーツに例えて話してみる
penseestokyo
CVPR2017 参加報告 速報版 本会議3日目
CVPR2017 参加報告 速報版 本会議3日目
Atsushi Hashimoto
春のJavaScript祭り
春のJavaScript祭り
Masahiro Hata
#2 プログラミングせよ!
#2 プログラミングせよ!
Ryouta Takeuchi
Similar to JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter03. 〜 prototype?編 〜
(9)
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
JavaScriptのパターンの話
JavaScriptのパターンの話
わかる LT@2
わかる LT@2
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
eSys01krtt
eSys01krtt
オブジェクト指向を完全に理解していない人がオブジェクト指向をモビルスーツに例えて話してみる
オブジェクト指向を完全に理解していない人がオブジェクト指向をモビルスーツに例えて話してみる
CVPR2017 参加報告 速報版 本会議3日目
CVPR2017 参加報告 速報版 本会議3日目
春のJavaScript祭り
春のJavaScript祭り
#2 プログラミングせよ!
#2 プログラミングせよ!
JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter03. 〜 prototype?編 〜
1.
JSの基本的なことをちょっと 掘り下げてみる話シリーズ Chapter03. ~ prototype?編
~ We Are JavaScripters! :)) 3rd @21cafe
2.
聴衆ターゲット JSはまだほとんどかいたことがない→× JSをかいていて、動くんだけど 何でそうなるのかよくわかっていない→○ ライブラリを使うことが多く、 素のJSはよくわからない→△ 言語仕様を深く理解している方→×
3.
ベースに なった本▷ オライリー 開眼!JavaScript (ふたたび) すごくいい本です!!
4.
prototype
5.
壮大な話になってしまったので、 2回に分けることにしました ※今回は前提知識の話で、 prototype自体の話はあまりしません
6.
私も完全に理解していない部分 (もしくは理解していると 勘違いしている部分) がありそうなので、 その際は遠慮なくご指摘くださいmm
7.
INDEX JSはプロトタイプベースの オブジェクト指向言語 コンストラクタ関数って? JSの世界はすべてオブジェクト? ※prototypeの継承まわりを次回に持ち越します!
8.
JavaScriptは プロトタイプベースの オブジェクト指向言語 である
9.
引用:MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model クラスベースとプロトタイプベースの比較
10.
引用:MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model 今日話すところ
11.
あれ?ちょっと待て
12.
ES6にclass構文 ってなかったか?
13.
ES6のclass構文 ※”純粋な”プロトタイプベースのオブジェクト指向言語は、JSとは異なるという指摘もある 参考:http://blog.anatoo.jp/entry/2015/05/05/163225 > ECMAScript 6
で導入された JavaScript クラスは、 JavaScript にすでにあるプロトタイプベース継承の糖衣 構文です。クラス構文は、新しいオブジェクト指向継承 モデルを JavaScript に導入しているわけではありません。 引用:MDN(https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes)
14.
引用:MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
15.
引用:MDN https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model クラスベースにおける「クラス」にあたるものが、 プロトタイプベースにおいては「コンストラクタ関数」 というらしい
16.
コンストラクタ関数っ て?
17.
9つのネイティブオブジェクトのコンストラクタ Number() String() Boolean() Object() Array() Function() Date() RegExp() Error() ※Math はコンストラクタではなく 静的オブジェクト
18.
9つのネイティブオブジェクトのコンストラクタ Number() String() Boolean() Object() Array() Function() Date() RegExp() Error() ※Math はコンストラクタではなく 静的オブジェクト
19.
コンストラクタ関数から オブジェクトを生成。 結果はarr1,2,3すべて Array[0] arr2, arr3も内部的に new
Arrayをしている
20.
Arrayをのぞいてみる コンストラクタ 関数の中身は [native code] C or
C++ のため 表示不可orz > you can look at the source repositories for Chromium and Firefox. (by stack over flow:http://stackoverflow.com/questions/9103336/read-javascript-native-code)
21.
Arrayをのぞいてみる console.dirで 参照すると、 function オブジェクト 自体の プロパティを 参照できる
22.
インスタンス化してみる
23.
インスタンス化してみる
24.
“new” したとき、 一体何が起きてるの?
25.
コンストラクタ関数は、 普通の関数と何が違うの?
26.
コンストラクタ関数の中身 [native code] ↓ よくわからないぞ・・・
27.
自分で コンストラクタ関数を定義して、 検証してみよう!
28.
自分でコンストラクタ関数を作って検証
29.
自分でコンストラクタ関数を作って検証
30.
自分でコンストラクタ関数を作って検証
31.
自分でコンストラクタ関数を作って検証 returnしてないもんね→
32.
じゃぁ、thisを明示的に返してみたらどうか?
33.
じゃぁ、thisを明示的に返してみたらどうか?
34.
じゃぁ、thisを明示的に返してみたらどうか?
35.
じゃぁ、thisを明示的に返してみたらどうか? thisの参照先は親オブジェクト
36.
↓newすると・・・ 暗黙的に 2つの処理が追加される らしい!
37.
じゃぁ、objectも生成してやんよ! ※変数名thisだとコンフリクトしてエラーでるので、 objにしています
38.
じゃぁ、objectも生成してやんよ!
39.
じゃぁ、objectも生成してやんよ!
40.
41.
42.
コンストラクタ関数まとめ 普段使っているネイティブオブジェクトは すべてコンストラクタ関数から生成されて いる new演算子を使わなければただの関数 new演算子を使うと、 1.thisにオブジェクト生成&returnを行う 2.prototype継承が行われる(※次回)
43.
JSの世界は すべてオブジェクト?
44.
この違い、わかりますか?
45.
この違い、わかりますか?
46.
この違い、わかりますか?
47.
いろんな値のtypeof
48.
いろんな値のtypeof
49.
null, undefined, “文字列”, 10,
true, false は オブジェクトではなく プリミティブ型
50.
?
51.
なんでできるの?
52.
参考:http://www.m-bsys.com/knowledge/javascript-primitive > プリミティブ型に対しプロパティの参照や メソッドの呼び出しがあった場合には、以下 のように一時的・暗黙的にオブジェクト型に 変換されているのです。 ゆえに、new演算子を自分でかくことはほぼない
53.
9つのネイティブオブジェクトのコンストラクタ Number() String() Boolean() Object() Array() Function() Date() RegExp() Error() ※Math はコンストラクタではなく 静的オブジェクト
54.
じゃぁそもそも、 プリミティブ型と オブジェクトの違いって・・
55.
そもそも、 プリミティブ型と オブジェクトの違いって・・ 1. 保存・複製の仕方 参照渡しと値渡し 2. 同値判定の仕方 参照が同じか、 値そのものが同じか
56.
JSの世界は すべてオブジェクト?
57.
NO
58.
プリミティブ値はオブジェクトではない ただし、nullとundefinedをのぞくプリミティブ値は、 一時的にオブジェクトに変換されオブジェクトのよ うにふるまう オブジェクトという言葉において、 JavaScriptオブジェクトとObject()は別物 ・Array()オブジェクト ・Object()オブジェクト まとめ
59.
ここまで、 オブジェクトの生成方法 (コンストラクタ関数)と、 JSに存在するオブジェクトの 全体像のお話をしました
60.
オブジェクトのふるまいを 追っていくと、 prototype が とても重要な役割を担っ ていることがわかります
61.
次回こそprototypeの話
62.
ありがとうございました!
Download now