JavaScript には非プリミティブ データ型が付属しています。 物体 」 これは、プリミティブ (組み込み) データ型の助けを借りて派生されます。 「オブジェクト」は、JavaScript メンバーにアクセスするためのインスタンスとして機能します。これは、JavaScript 関数を呼び出して、プリミティブ データ型では実行できない特定のタスクを実行するために使用されます。ただし、このデータ型の欠点の 1 つは、内容ではなくその ID に基づいて比較操作が実行されることです。この問題を解決するために、JavaScript は新しいデータ型を提供します。 記録 」は、同一性ではなく内容に基づいて厳密に比較しているためです。
このガイドでは、JavaScript レコードについて説明します。
「記録」とは何ですか?
JavaScript」 記録 」は、組み込みのものと同様の新しいプリミティブ型 (文字列、数値、記号) です。 。唯一の違いは、「レコード」は純粋に不変であることです。つまり、レコードが初期化されるとキーの値は変更できません。
構文
「」の構文 記録 「」は「オブジェクト」と同じですが、「」が必要です。 # 「レコード」であることを示す中括弧の前にある「(ハッシュ)」記号:
const 記録名 = #{
/*
キー: 値
/*
}
上記の構文を使用して新しいレコードを作成してみましょう。
記録を作成するには?
レコードを作成するには、以下のコード ブロックに示すように、中括弧の先頭に「#(ハッシュ)」記号を指定します。
const 人 = #{
名前: 'または' 、
名前: 「ウスマン」 、
年: 21 、
}
コンソール.ログ ( 人物の名前 )
コンソール.ログ ( 人の名前 )
コンソール.ログ ( 人物 )
上記のコード ブロックでは次のようになります。
-
- ” 人 「」は、「fname」、「lname」、「age」というキーを持つ新しい「レコード」を指します。
- 次に、「 コンソール。 ログ() 」メソッドは、「person」のキー値をそれぞれ1つずつ表示します。
注記: ユーザーは、次のように「レコード」コンテンツを 1 行で指定することもできます。
const 人 = #{fname: 'アリ'、lname: 'ウスマン'、年齢: 21}
出力
出力には、作成されたレコード「person」のすべてのキー値が表示されていることがわかります。
記録の制限
「レコード」はキーとして「配列」と「オブジェクト」を受け入れません。ユーザーがそれらをレコードに渡すと、コンパイラーは「 タイプエラー ”。次のコード ブロックは、それを実際に示しています。
const newRecord = #{到着: [ 「HTML」 、 「CSS」 、 「JavaScript」 】
}
コンソール.ログ ( 人物.arr )
上記のコード行では次のようになります。
-
- ” 新記録 」は、「arr」という名前の配列をキーとして初期化します。
- 次に、「 コンソール。 ログ() 」は、「newRecord」に指定した「arr」キーの値を表示します。
出力
「レコード」は配列をキーとして受け入れないため、コンソールには「TypeError(予期しない型を渡します)」が表示されます。
例を使用した JavaScript レコードの理解
このセクションでは、「レコード」の具体的な使用法を例を挙げて説明します。
最初の例から始めましょう。
例 1: レコードは完全に不変です
JavaScript」 記録 」は深く不変なプリミティブ型です。 「完全に不変」とは、レコードのすべてのキー値は、一度設定されるとどのレベルでも変更または変更できないことを意味します。 「プリミティブ」型は、文字列、数値、null、未定義など、すべての基本的な JavaScript データ型を指します。
次のコード ブロックは、記載されている概念を実際に示しています。
const myRecord = #{名前: 'または' 、
年: 21 、
}
myRecord.name= 「ハルーン」
上記のコード ブロックでは、「 マイレコード ' 鍵 ' 名前 」値は初期化後に変更されます。
出力
「newRecord」キー値を変更すると、コンパイラが「TypeError」を表示することがわかります。
例 2: 記録は比較的なものである
「レコード」の主な利点は、アイデンティティではなく、その値に基づいて比較されることです。一方、「オブジェクト」は、値ではなくアイデンティティに従って比較します。 2 つの Record 値が等しい場合、コンパイラは true を取得します。
指定されたコード行を使用して実際に見てみましょう。
const myRecord = #{名前: 'または' 、
年: 21 、
}
コンソール.ログ ( マイレコード === #{
名前: 'または' 、
年: 21 、
} ) ;
ここで、上記のコード スニペットは 2 つのレコードを作成し、「 厳密な平等 (===)」演算子。
出力
出力は「」を返します。 真実 指定された演算子、つまり「レコード」が等しいことを意味するブール値。
例 3: レコードをオブジェクトに変換する
JavaScript の「レコード」は、「オブジェクト」コンストラクターを使用して「オブジェクト」データ型に変換することもできます。実際の実装は次のとおりです。
させて マイレコード = #{ 1 つ: 1、2 つ: 2 }コンソール.ログ ( 物体 ( マイレコード ) )
コンソール.ログ ( 私のレコードのタイプ )
上記のコード行では次のようになります。
-
- 最初 ' lconsole.and() ” メソッドは、「Object」コンストラクターを使用して「 マイレコード 」を「オブジェクト」にします。
- 2 番目の「console.log()」メソッドは、「 の種類 ” キーワードを使用して、”myRecord” の種類を確認します。
出力
出力には、変換された「newRecord」が「 物体 」タイプは、「newRecord」が「オブジェクト」に正常に変換されたことを確認します。
例 4: オブジェクトをレコードに変換する
ユーザーは、「」を使用して、比較目的で「オブジェクト」を「レコード」に変換することもできます。 記録() ' 方法。実際にやってみましょう:
させて 私のオブジェクト = { 1つ: 1 、 二: 2 }させて myRecord = レコード ( 私のオブジェクト )
コンソール.ログ ( マイレコード )
さて、上記のコード スニペットでは「 記録() 」メソッドを使用して、指定された「myObj」オブジェクトを「myRecord」に変換します。
出力
出力には、オブジェクト「myObj」が「myRecord」コンテンツに正常に変換されたことが示されています。
例 5: 既存のレコードから新しいレコードを作成する
最初の例で説明したように、「レコード」は不変です。つまり、そのキー値は変更できません。ただし、ユーザーは、他の値を追加しながら、既存の「レコード」から新しい「レコード」を作成できます。
指定されたコード スニペットに従って、既存のレコードから新しいレコードを作成します。
させて 古いレコード = #{A: 1、B: 2 };させて 新しいレコード = #{ ...myRecord、C: 3、D:4}
コンソール.ログ ( 新記録 )
上記の JavaScript コードでは次のようになります。
-
- ” 古いレコード 」は、2 つのキー値を持つ既存のレコードを指します。
- 次に「 新記録 」は、既存の「oldRecord」を使用し、指定された新しいキー値を追加することによって作成された新しいレコードに対応します。
- 最後に、「 コンソール。 ログ() 」には、「newRecord」という名前の新しく作成されたレコードが表示されます。
出力
出力には、新しく作成されたレコードのすべてのキー値が表示されます。
例 6: 「Object.keys()」メソッドを使用したレコードへのアクセス
ユーザーは組み込みの JavaScript を使用できます。 キー() 「」の方法 物体 」を使用してレコードのキーにアクセスします。このシナリオでは、「myRecord」キーにアクセスするために使用されます。
させて マイレコード = #{A: 1、B: 2 };させて レコードキー = オブジェクト.キー ( マイレコード ) ;
コンソール.ログ ( レコードキー )
上記のコード スニペットでは、「 Object.keys() 」メソッドを使用して、「myRecord」に存在するすべてのキーにアクセスします。
出力
出力には、「myRecord」のすべてのキーが配列形式で表示され、そのインデックスもキーと値のペア形式で表示されます。
結論
JavaScript」 記録 」は、高度な不変性を備えた高度なレベルのデータ型です。これは「オブジェクト」と同様に機能しますが、主な違いは、その値が設定された後に変更または更新できることです。宣言の中括弧の前に「#(ハッシュ)」記号が必要です。そうでない場合は、オブジェクトとして機能します。このガイドでは、JavaScript レコードのデータ型について簡単に説明しました。