JavaScriptでのオブジェクトの分類
我々はいくつかのカテゴリにオブジェクトを置くことができます。
-
ホスト・オブジェクト(ホストオブジェクト):JavaScriptのホスト環境によって提供されるオブジェクトは、彼らの行動は完全にホスト環境によって決定されます。
- ビルトインオブジェクト(組み込みオブジェクト):JavaScript言語によって提供されるオブジェクト。
組み込みオブジェクト(組み込みオブジェクト):基準では、オブジェクトのインスタンスを作成するには、自動的にJavaScriptランタイムを使用して作成されます。
ネイティブオブジェクト(ネイティブオブジェクトは):缶アレイ、正規表現コンストラクタまたは作成を介してユーザによって構築された他の特殊な構文オブジェクト。
共通オブジェクト、オブジェクトプロトタイプの構文{}、キーワードを作成したオブジェクトクラスのコンストラクタまたはクラス定義によって継承することができる(通常オブジェクト):,。
ホスト・オブジェクト
JavaScriptのホストオブジェクト奇妙な、しかし、フロント間違いなくホストの最も身近なブラウザ環境です。
ブラウザ環境では、我々はすべての文書等の属性、がたくさんあり、グローバルオブジェクトがウィンドウであることを、ウィンドウを知っています。
実際には、JavaScript言語、ブラウザ環境からいくつかの部分からグローバルオブジェクトウィンドウのプロパティ、。
標準では、Windowオブジェクトの他の属性で指定したグローバルオブジェクト属性のJavaScript、W3Cの標準を提供します。
ホストオブジェクトは、2つの固有に分割され、ユーザーは、作成することができ、そのようなのdocument.createElementとしてあなたには、いくつかのDOMオブジェクトを作成することができます。
ホストはまた、いくつかのコンストラクタを提供します、例えば、我々はブラウザの詳細に解説でAPIの一部となる新しいImage img要素を作成するために使用することができます。
ビルトインオブジェクト組み込みオブジェクト
我々は以前、組み込みオブジェクトは、標準で定義されており、自動的にJavaScriptランタイムを使用して作成されたオブジェクトのインスタンスを作成すると述べました。
任意のJavaScriptコードが実行される前に、固有のオブジェクトが出て作成されていた、彼らは一般的に図書館財団の果たす役割に似ています。実際には、我々は、前述の「クラス」組み込みオブジェクトの一種です。
ECMA標準は、固有の150個の以上のオブジェクトが含まれている固有のオブジェクトテーブル、を提供してくれます。
ビルトインオブジェクト、ネイティブオブジェクト
私たちは、JavaScriptで入れている、オブジェクトは、オブジェクトのコンストラクターが作成するネイティブ言語自身で呼び出すことができます。JavaScriptの標準、コンストラクタ30の複数です。私の理解によれば、異なるアプリケーションシナリオに応じて、私は次のカテゴリに元のオブジェクトを置きます。
これらのコンストラクタを通じて、私たちはネイティブオブジェクトとして知られているこれらのオブジェクトを置くので、new演算子を使用して新しいオブジェクトを作成することができます。
ほとんどすべてのこれらの機能のコンストラクタは、純粋なJavaScriptコードでは達成できないが、彼らは構文を拡張/クラスによって継承することはできません。
これらのオブジェクトのほとんどは、次のようなコンストラクタのプライベートフィールドを使用して作成されます。
- エラー:[[ErrorData]]
- ブール:[[BooleanData]]
- 番号:[[NumberData]]
- 日付:[[DATEVALUE]]
- 正規表現:[[RegExpMatcher]]
- 記号:[[SymbolData]]
- マップ:[[地図データ]]
これらのフィールドは、プロトタイプ継承されたメソッドが仕事をしないので、我々はすべてのこれらのオブジェクトは、特定の機能や性能に自生していることを信じることができ、かつ設計させる「特権オブジェクトを。」
特定の行動をターゲット
天然のオブジェクトとネイティブオブジェクトでは、上記目的に加えて、対象の通常の動作とオブジェクトの数が非常に異なっているがあります。
彼らの共通添字演算子(で、括弧の使用またはプロパティアクセスポイントを行う)、または異なる通常のオブジェクト、ここで私の簡潔にまとめたものでプロトタイプを設定します。
- 配列:配列の長さのプロパティの変更は、最大屈折率に応じて自動的に発生します。
- Object.prototype:通常、デフォルトのプロトタイプオブジェクトのすべてとして、プロトタイプを設定するためにそれを与えることはできません。
- 文字列:インデックス操作をサポートするために、正の整数プロパティアクセス文字列が検索に移動します。
- 引数:引数は非負整数の添字属性は、対応する変数とリンク。
- 名前空間オブジェクトモジュール:特別な場所は、一般的な目的は完全に異なっていると、ちょうどそれをインポートしようと、非常に大きいです。
- アレイおよびアレイ・バッファを入力:添字特別な操作に関連付けられたメモリのブロック。
- バインド後の機能:元に関連付けられている機能。
すべての固有のJavaScriptオブジェクトを取得します。
私たちは、JavaScriptの標準からJavaScriptオブジェクト定義のすべてを見つけることができます。JavaScript言語はグローバルオブジェクトのプロパティを指定します。
三つの値:
インフィニティ、NaNは、未定義。
ナイン機能:
- evalの
- isFiniteの方
- ますisNaN
- parseFloatは
- parseInt
- decodeURI
- decodeURIComponent
- encodeURI
- encodeURIComponentで
いくつかのコンストラクタ:
アレイ、日付、正規表現、約束、プロキシ、地図、WeakMap、セット、WeakSet、機能、ブール、文字列、数字、記号、オブジェクト、エラー、EvalError、例外RangeError、にReferenceError、でSyntaxError、TypeError例外、URIError、ArrayBuffer、SharedArrayBuffer、DataViewに、型指定された配列、Float32Array、なFloat64Array、Int8Array、Int16Array、Int32Array、UInt8Array、UInt16Array、UInt32Array、UInt8ClampedArray。
四つのオブジェクトは名前空間として使用されます。
- アトミック
- JSON
- 数学
- リフレクト
いくつかの固有のオブジェクト:
VaRのセット= 新しいセット(); VaRのオブジェクト= [ evalを、 isFiniteの方、 ますisNaN、 parseFloatは、 parseIntは、 decodeURI、 は、decodeURIComponent、 encodeURI、 encodeURIComponentで、 アレイ、 日付、 正規表現、 約束、 プロキシ、 地図、 WeakMap、 セット、 WeakSet、 機能、 ブール、 文字列、 数値、 記号、 オブジェクト、 エラー、 EvalError、 例外RangeError、 ReferenceError、 にSyntaxError、 例外TypeError、 URIError、 ArrayBuffer、 SharedArrayBuffer、 データビュー、 Float32Array、 なFloat64Array、 Int8Array、 Int16Array、 Int32Array、 Uint8Array、 Uint16Array、 Uint32Array、 Uint8ClampedArray、 アトミック、 JSON、 数学は、 ]反映。 objects.forEach(O => set.add(O))。 用(VAR ; I <objects.length; iが0 = I ++ ){ VAR = O オブジェクト[i]の ための(VaRのObject.getOwnPropertyNamesのP(O)){ VARの D = Object.getOwnPropertyDescriptor(O、P) であれば((d.value!== NULL && typeof演算 d.value === "オブジェクト")||(typeof演算 D。値=== "機能" )) の場合(!set.has(d.value)) set.add(d.value)、objects.push(d.value)。 もし(d.get) の場合(!set.has(d.get)) set.add(d.get)、objects.push(d.get)。 もし(d.set) の場合(!set.has(d.set)) set.add(d.set)、objects.push(d.set)。 } }