りあクト!輪読会 - その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 真偽値 truefalse
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