Upload
yukiko-tamiya
View
82
Download
4
Embed Size (px)
Citation preview
聴衆ターゲットJSはまだほとんどかいたことがない→×
JSをかいていて、動くんだけど何でそうなるのかよくわかっていない→○
ライブラリを使うことが多く、素のJSはよくわからない→△
言語仕様を深く理解している方→×
引用:MDNhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
クラスベースとプロトタイプベースの比較
引用:MDNhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
今日話すところ
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)
引用:MDNhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
クラスベースにおける「クラス」にあたるものが、プロトタイプベースにおいては「コンストラクタ関数」というらしい
9つのネイティブオブジェクトのコンストラクタ
Number()
String()
Boolean()
Object()
Array()
Function()
Date()
RegExp()
Error()
※Math はコンストラクタではなく 静的オブジェクト
9つのネイティブオブジェクトのコンストラクタ
Number()
String()
Boolean()
Object()
Array()
Function()
Date()
RegExp()
Error()
※Math はコンストラクタではなく 静的オブジェクト
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)
コンストラクタ関数まとめ普段使っているネイティブオブジェクトはすべてコンストラクタ関数から生成されている
new演算子を使わなければただの関数
new演算子を使うと、1.thisにオブジェクト生成&returnを行う2.prototype継承が行われる(※次回)
参考:http://www.m-bsys.com/knowledge/javascript-primitive
> プリミティブ型に対しプロパティの参照やメソッドの呼び出しがあった場合には、以下のように一時的・暗黙的にオブジェクト型に変換されているのです。
ゆえに、new演算子を自分でかくことはほぼない
9つのネイティブオブジェクトのコンストラクタ
Number()
String()
Boolean()
Object()
Array()
Function()
Date()
RegExp()
Error()
※Math はコンストラクタではなく 静的オブジェクト
プリミティブ値はオブジェクトではないただし、nullとundefinedをのぞくプリミティブ値は、一時的にオブジェクトに変換されオブジェクトのようにふるまう
オブジェクトという言葉において、JavaScriptオブジェクトとObject()は別物・Array()オブジェクト・Object()オブジェクト
まとめ