JavaScript オブジェクトでできることのいくつか
通常のオブジェクト プロパティの割り当てとトラバーサルに加えて、JavaScript オブジェクトを使用して他の多くの操作を実行することもできます。この記事では、内部プロパティへのアクセス、プロパティ記述子の操作、読み取り専用プロパティの継承など、それらの使用方法を学びます。
1. 内部プロパティへのアクセス
JavaScript オブジェクトには、従来の方法ではアクセスできない内部プロパティがあります。内部プロパティ名は角括弧 [[]] で囲まれており、オブジェクトの作成時に使用できます。
内部プロパティは既存のオブジェクトに動的に追加できません。
内部プロパティは、ECMAScript 仕様で指定された内部状態を保存する一部の組み込み JavaScript オブジェクトで使用できます。
内部プロパティは 2 つあり、1 つはオブジェクトを操作するためのメソッド、もう 1 つはデータを保存するためのメソッドです。例:
[[Prototype]] — オブジェクトのプロトタイプ。null またはオブジェクト
[[Extensible] ] — 許可されるかどうかを示します。 新しいプロパティをオブジェクトに動的に追加します。
#[[PrivateFieldValues]] — プライベート クラス フィールドの管理に使用されます。
2. プロパティ記述子オブジェクト
データ属性には、値の読み取りおよび書き込みが可能なデータ値の場所が含まれます。言い換えれば、データ属性は Object.Attributes を通じてアクセスできます。つまり、データ属性は通常やり取りするユーザーによって割り当てられた値を返し、余分なことは何も行いません。
データ属性には、その動作を説明する 4 つの特性があり (内部値を表すために、属性は 2 つの角括弧で囲まれています)、これは記述子オブジェクトと呼ばれます。
値記述子は属性のデータ値です。たとえば、次のオブジェクトがあります:
let foo = { a: 1}
この場合、a の値属性記述子は 1 です。
書き込み可能とは、属性の値を変更できるかどうかを指します。デフォルト値は true で、プロパティが書き込み可能であることを意味します。ただし、さまざまな方法で書き込み不可能にすることができます。
構成可能とは、オブジェクトのプロパティを削除したり、そのプロパティ記述子を変更したりできることを意味します。デフォルト値は true で、これは構成可能であることを意味します。
enumerable は、for...in ループで走査できることを意味します。デフォルト値は true で、for-in ループを通じてプロパティを返すことができることを意味します。
返された配列にプロパティ キーを追加する前に、Object.keys メソッドは列挙可能な記述子もチェックします。ただし、Reflect.ownKeys メソッドはこのプロパティ記述子をチェックせず、代わりにすべての独自のプロパティ キーを返します。
プロトタイプ記述子には他のメソッドがあり、get と set はそれぞれ値の取得と設定に使用されます。
新しいオブジェクトを作成するときは、次に示すように、Object.defineProperty メソッドを使用して記述子を設定できます。
let foo = { a: 1}Object.defineProperty(foo, 'b', { value: 2, writable: true, enumerable: true, configurable: true,});
foo の新しい値は {a: 1, b: 2 です。 } .
defineProperty を使用して、既存のプロパティの記述子を変更することもできます。例:
let foo = { a: 1}Object.defineProperty(foo, 'a', { value: 2, writable: false, enumerable: true, configurable: true,});
したがって、次のような値を foo.a に割り当てようとすると、:
foo.a = 2;
厳密モードがオフの場合、ブラウザはそれを無視し、そうでない場合はスローします。書き込み可能であるためのエラーは false に設定され、プロパティが書き込み可能ではないことを示します。
以下に示すように、defineProperty を使用してプロパティをゲッターに変換することもできます:
'use strict'let foo = { a: 1}Object.defineProperty(foo, 'b', { get() { return 1; } })
次のように書くと:
foo.b = 2;
b プロパティはゲッター プロパティであるため、厳密モードを使用すると、「Getter プロパティを再割り当てできません」というエラーが発生します。
3. 継承された読み取り専用プロパティは割り当てられません
継承された読み取り専用プロパティは割り当てられません。これは当然のことであり、このように設定したので、プロパティは継承されるため、プロパティを継承するオブジェクトに伝播する必要があります。
以下に示すように、Object.create を使用して、プロトタイプ オブジェクトからプロパティを継承するオブジェクトを作成できます。
const proto = Object.defineProperties({}, { a: { value: 1, writable: false }})const foo = Object.create(proto)
上記のコードでは、proto.a の書き込み可能な記述子を次のように設定します。 false なので、別の値を割り当てることはできません。
次のように記述すると:
foo.a = 2;
strict モードでは、エラー メッセージが表示されます。
概要
私たちは JavaScript オブジェクトを使って、私たちが知らないかもしれない多くのことを行うことができます。
まず、一部の JavaScript オブジェクト (組み込みブラウザ オブジェクトなど) には、二重角括弧で囲まれた内部プロパティがあり、オブジェクトの作成によって動的に追加できない内部状態を持っています。 JavaScript オブジェクトのプロパティにはプロパティ記述子もあり、これを使用して、値を制御できるかどうか、プロパティ記述子を設定できるかどうか、またはプロパティ記述子を変更できるかどうかなどを制御できます。 defineProperty を使用して、プロパティのプロパティ記述子を変更できます。また、新しいプロパティとそのプロパティ記述子を追加するためにも使用されます。最後に、継承された読み取り専用プロパティは読み取り専用のままですが、親プロトタイプ オブジェクトから継承されるため、これは当然のことです。
推奨チュートリアル:「javascript チュートリアル」
以上がJavaScript オブジェクトでできることのいくつかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
