りあクト!輪読会 - その3
プリミティブ値のリテラルとラッパーオブジェクト
JavaScriptではプリミティブ値を定義するときにリテラルを用います。
リテラルとは、英語で「文字通り」を意味し、コードに書いた値がそのまま実行時にもその値のまま意味をもちます。(型定義せずに値の意味を持つ??)
各プリミティブ型に用意されているリテラル
- Boolean型
真偽値リテラル(true、false)
- Number型
数値リテラル
浮動小数点リテラル(2.1e8 = 2.1 × 10の8乗
)
- BigInt型
数値リテラル(100n
は小数点以下を四捨五入する)
- String型
シングルクォオートなどで囲む文字列リテラル
バッククォートで囲むと改行や式展開(${}
)ができるテンプレートリテラル
- Null型
nullリテラル(nullを返す)
JavaScriptではプリミティブ値にアクセスする時に、対応するラッパーオブジェクトに自動的に変換される。
'Serval lives in savanna'.replace('savanna', 'jungle'); 'Serval lives in jungle'
内部でオブジェクトに変換されることにより、プリミティブ型で記述してもメソッドが使用できる。 今回で言えば、'Serval lives in savanna'がプリミティブ型のString型であることを自動判定し、対応するラッパーオブジェクト(rubyのオブジェクトと一緒?)のstringに変換している。
'Serval lives in savanna'.replace('savanna', 'jungle'); // 内部で下記に変換されている。 (new String('Serval lives in savanna')).replace('savanna', 'jungle');
インスタンスメソッドはオブジェクト型でしか使用できない。しかし、ラッパーオブジェクトにより、プリミティブ型をオブジェクト型に変換しているので、インスタンスメソッドが使用できるようになっている。
この変換はJavaScriptが毎回自動的にやってくれるので、普段私たちは意識せずに使用することができる。
ラッパーオブジェクト | プリミティブ型 | 例 |
---|---|---|
Boolean | 真偽値 | true やfalse |
Number | 数値 | 1や2 |
String | 文字列 | "文字列" |
Symbol | シンボル | Symbol("説明") |
🤔🤔🤔🤔🤔🤔?????😧😧😧😧😧😧😧😧😧😧😧😧
オブジェクト型とそのリテラル
リテラルを持つオブジェクト型 - 配列リテラル - オブジェクトリテラル - 正規表現リテラル
リテラルとは
変数に代入される値のことをリテラルと言います。 そのリテラルの型によって配列リテラルなのか、オブジェクトリテラルなのか、正規表現リテラルなのかが判断されます。
const hoge = "fuga" // ↑変数か関数 ↑文字列と認識してるから文字列リテラル const arr = [1, 2, 3] // ↑配列のリテラル
JavaScriptでは、限定的な場面で用いる「オブジェクト」と、広い範囲の意味で用いる「オブジェクト」2種類ある。
①限定的な場面での「オブジェクト」は、キーと値の組み合わせを持つプロパティの集合のことを指す。Rubyでいうハッシュなどもこれに該当する。
プロパティの集合(オブジェクト)は一般的にJSON形式で表したり、用いることが多い。そもそもJSONとはJavaScriptObjectNotation(JavaScriptオブジェクト表記法)の略なので、プロパティの集合がオブジェクトということにも納得がいく。 ↓ JSONさんは「JavaScriptオブジェクト表記法」の略
②広義のオブジェクトはプリミティブ値以外の全ての値を指す。 もっと細くいうと、最終的な標準組み込みオブジェクト(継承元)としてObjectをもっている値。
コンストラクターって何? オブジェクトを生成する関数 newを呼び出す関数がコンストラクタ関数 コンストラクターは、インスタンス化された特定のクラスオブジェクトに属しています。コンストラクターは、そのオブジェクトを初期化し、オブジェクトの非公開の情報にアクセスできるようにします。コンストラクターの概念は、ほとんどのオブジェクト指向プログラミング言語にあります。本質的に、JavaScript のコンストラクターはクラスのインスタンスで宣言します。
文脈で察しろ 🥶
こういう配列の書き方をしたらこういうリテラルになる
""で囲えば文字列だよね ↑ 文字列を文字列として使えることをリテラル
リテラルとは、プログラミングにおいてソースコード中で使用される、数値や文字列等の直に示したデータのことです。
より厳密に説明すると、プログラム中で常に同じ値をとる定数というものがありますが、定数が指す値のことをリテラルと呼びます。定数は変数のように識別子にデータ、値を代入したものです。例えば、以下のように定義したとします。
const int A=10;
この場合、Aは定数であり、それだけ 指す値10がリテラルです。
ひとこと
むずい
参照
【JavaScript】 コンストラクターとは?関数とは違うのか?
https://note.affi-sapo-sv.com/js-constructor.php