ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript オブジェクトの 3 つのタイプとは何ですか?

JavaScript オブジェクトの 3 つのタイプとは何ですか?

青灯夜游
青灯夜游オリジナル
2021-11-24 18:17:025915ブラウズ

JavaScript の 3 つのオブジェクト タイプ: 1. 使用するためにインスタンス化する必要があるローカル オブジェクトと、インスタンス化せずに使用できる組み込みオブジェクトを含む内部オブジェクト; 2. 環境であるホスト オブジェクトJS スクリプトが実行される場所 提供されたオブジェクト; 3. カスタム オブジェクトは、開発者自身によって定義されたオブジェクトです。

JavaScript オブジェクトの 3 つのタイプとは何ですか?

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript のオブジェクトは、内部オブジェクト (ローカル オブジェクトと組み込みオブジェクト)、ホスト オブジェクト、カスタム オブジェクトという 3 つの主要なカテゴリに分類できます。

1、内部オブジェクト

1)、ローカル オブジェクト、インスタンス化する前にインスタンス化 (新規) する必要がある ECMAScript によって提供されるオブジェクト使用:

オブジェクト、関数、配列、文​​字列、ブール値、数値、日付、RegExp、エラー、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

2 )、組み込みオブジェクト、インスタンス化せずに使用できる ECMAScript によって提供されるオブジェクト:

Global (グローバル オブジェクト) および Math

Math オブジェクト プロパティ

プロパティ 説明
E の底である算術定数 e を返します。自然対数 (2.718 にほぼ等しい)。
LN2 2 の自然対数 (約 0.693) を返します。
LN10 10 の自然対数 (約 2.302) を返します。
LOG2E e の底 2 の対数 (約 1.4426950408889634) を返します。
LOG10E e の 10 を底とする対数 (約 0.434) を返します。
PI 円周率 (3.14159 にほぼ等しい) を返します。
SQRT1_2 2 の平方根の逆数 (約 0.707 に等しい) を返します。
SQRT2 2 の平方根 (約 1.414) を返します。

#Math オブジェクト メソッド

##メソッドabs(x)acos(x)asin(x)atan(x)atan2(y,x)ceil(x)cos(x)exp(x)floor(x)log(x)max(x,y,z,...,n)min(x,y,z,...,n)pow(x,y)random()round(x)sin(x)sqrt(x)tan(x)#JavaScript グローバル プロパティ
説明
x の絶対値を返します。
x の逆余弦を返します。
x の逆正弦を返します。
x の逆正接を -PI/2 ラジアンから PI/2 ラジアンまでの数値として返します。
x 軸から点 (x,y) までの角度を返します (-PI/2 と PI/2 の間)間のラジアン)。
数値を切り上げます。
数値のコサインを返します。
Ex の指数を返します。
x を切り捨てます。
数値の自然対数を返します (底は e)。
x,y,z,...,n の中で最大の値を返します。
x,y,z,...,n の中で最も小さい値を返します。
x の y 乗を返します。
0 ~ 1 の範囲の乱数を返します。
四捨五入。
数値の正弦を返します。
数値の平方根を返します。
角度の正接を返します。


プロパティ説明Infinity は正の無限大の値を表します。 NaN値が数値かどうかを示します。 未定義未定義の値を示します。

JavaScript グローバル関数

関数 説明
decodeURI() エンコードされた URI をデコードします。
decodeURIComponent() エンコードされた URI コンポーネントをデコードします。
encodeURI() 文字列を URI にエンコードします。
encodeURIComponent() 文字列を URI コンポーネントにエンコードします。
escape() 文字列をエンコードします。
eval() JavaScript 文字列を評価し、スクリプト コードとして実行します。
isFinite() 値が有限数かどうかを確認します。
isNaN() 値が数値かどうかを確認します。
Number() オブジェクトの値を数値に変換します。
parseFloat() 文字列を解析し、浮動小数点数を返します。
parseInt() 文字列を解析し、整数を返します。
String() オブジェクトの値を文字列に変換します。
unescape() escape() でエンコードされた文字列をデコードします。

2. ホスト オブジェクト

ホスト オブジェクトは、 JS スクリプト。ブラウザによって提供されるオブジェクト。すべての BOM と DOM はホスト オブジェクトです。

3. カスタム オブジェクト

開発者によって定義されたオブジェクト

⑴オブジェクト リテラル メソッド (JSON 経由でオブジェクトを作成)

欠点: 同じインターフェイスを使用して多数のオブジェクトを作成すると、大量の重複コードが生成されます。

⑵ファクトリーモード。

①ファクトリパターンは、関数内にオブジェクトを作成する文を記述し、パラメータを渡して特定のオブジェクトを作成し、最後に作成したオブジェクトを返すというパターンです。

関数 createperson() は、受け取ったパラメーターに基づいて、必要なすべての情報を含む Person オブジェクトを構築できます。

この関数は何度でも呼び出すことができ、毎回 2 つのプロパティと 1 つのメソッドを含むオブジェクトを返します。

②欠点: ファクトリ パターンは複数の類似したオブジェクトを作成できますが、オブジェクトの識別の問題、つまりオブジェクトの種類を知る方法を解決できません。

⑶コンストラクター パターン

①欠点: コンストラクターを使用する場合の主な問題は、各メソッドをインスタンスごとに作成する必要があることです。

②ECMAScript では関数はオブジェクトであるため、関数が定義されるたびにオブジェクトがインスタンス化されます。

③つまり、コンストラクターを通じてインスタンス化される複数のオブジェクトのメソッドは複数の異なるメソッドですが、内部コードや実装される関数は同じであるため、リソースの無駄が発生します。

⑷プロトタイプパターン

①jsでは、各関数はプロトタイプ属性を持ちます。これは、プロトタイプオブジェクトと呼ばれるオブジェクトを指すポインタです。

②プロトタイプ パターンを使用すると、すべてのインスタンスでプロトタイプ オブジェクトのプロパティとメソッドを共有できます。つまり、コンストラクターでオブジェクト インスタンスの情報を定義する必要がありません。

③欠点: コンストラクターに初期化パラメータを渡すリンクが省略されるため、デフォルトではすべてのインスタンスが同じ属性値を取得します。

プロトタイプ パターンの最大の問題は、その共通の性質によって引き起こされます。プロトタイプ内のすべてのプロパティは多くのインスタンスによって共有されます。

この種の共有は関数に非常に適しています。参照型を含むプロパティの場合、問題はより顕著になります。

④ したがって、プロトタイプパターンが単独で使用されることはほとんどありません。

⑸コンストラクター パターンとプロトタイプ パターンの併用

①コンストラクター パターンとプロトタイプ パターンの併用は、カスタム タイプを作成する最も一般的な方法です。

②コンストラクター パターンはインスタンス プロパティの定義に使用され、プロトタイプ パターンはメソッドと共有プロパティの定義に使用されます。

③ その結果、各インスタンスはインスタンス属性の独自のコピーを持つことになりますが、同時にメソッドへの参照を共有し、メモリを最大限に節約します。

⑹その他のモード

①動的プロトタイプモード: コンストラクターが初めて呼び出されたときのみ、メソッドがプロトタイプオブジェクトの対応する属性に割り当てられます。他の例も同様に処理されます。コンストラクター モードとして

② 寄生コンストラクター モード: オブジェクトを作成するコードのみをカプセル化し、その後、引き続き new 演算子を使用して

を呼び出すことで、新しく作成されたオブジェクトを返します。 ③ 安全なコンストラクター モード:パブリック プロパティはなく、プライベート変数とメソッド、およびプライベート変数を処理するためのいくつかの get/set メソッドのみがあります。

[関連する推奨事項: JavaScript 学習チュートリアル]

以上がJavaScript オブジェクトの 3 つのタイプとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。