JavaScriptクラスは、オブジェクトを作成するためのブループリントです。 クラスは、データとデータを操作する関数をカプセル化します。
JavaやC++などの他のプログラミング言語とは異なり、JavaScriptクラスはプロトタイプの継承に対する構文的な砂糖です。 言い換えれば、ES6クラスは単なる特殊関数です。
ES6より前のクラス再訪
ES6より前のクラスでは、JavaScriptにはクラスの概念がありませんでした。, クラスを模倣するために、次の例に示すようにコンストラクタ関数を使用することがよくあります。
Output:
仕組み。
まず、Personというプロパティ名を持つコンストラクタ関数としてnameを作成します。 getName()関数はprototypeに割り当てられているため、Personタイプのすべてのインスタンスで共有できます。次に、Person演算子を使用して、newタイプの新しいインスタンスを作成します。, したがって、johnオブジェクトは、プロトタイプ継承によるPersonおよびObjectのインスタンスです。,
次のステートメントでは、instanceof演算子を使用して、johnがPersonおよびObjectタイプのインスタンスであるかどうかを確認します。
Code language: JavaScript (javascript)
ES6クラス宣言
Es6では、次の例に示すようにクラスを宣言するための新しい構文が導入されました。
Code language: JavaScript (javascript)
このPersonクラスは、前の例のPersonタイプのように動作します。 ただし、コンストラクタ関数を使用する代わりに、classキーワードを使用します。,
Personクラスのconstructor()は、インスタンスのプロパティを初期化できる場所です。 JavaScriptは、クラスのオブジェクトをインスタンス化するときに、constructor()メソッドを自動的に呼び出します。
以下は、新しいPersonオブジェクトを作成し、自動的にconstructor()Personクラスの
を呼び出します。
Code language: JavaScript (javascript)
getName()は、getName()のメソッドと呼ばれます。Personクラス。, コンストラクタ関数と同様に、次の構文を使用してクラスのメソッドを呼び出すことができます。
Code language: CSS (css)
例えば、
Code language: JavaScript (javascript)
クラスが特殊関数であることを確認するには、typeof演算子を使用してPersonクラス。
Code language: JavaScript (javascript)
期待どおりにfunctionを返します。,
johnオブジェクトは、PersonおよびObjectタイプのインスタンスでもあります。
Code language: JavaScript (javascript)
クラス対カスタムタイプ
クラスとコンストラクタ関数で定義されたカスタムタイプの間の類似点にもかかわらず、クラスとコンストラクタ関数を介して定義されたカスタムタイプとの間に類似点がありますが、コンストラクタ関数を介して定義されたカスタムタイプとの間に類似点があります。いくつかの重要な違いがあります。
まず、クラス宣言は関数宣言のようにホイストされません。
たとえば、Personクラス宣言セクションの上に次のコードを配置すると、ReferenceErrorが表示されます。,
Code language: JavaScript (javascript)
エラー:
Code language: JavaScript (javascript)
次に、クラス内のすべてのコードがstrictモードで自動的に実行されます。 この動作を変更することはできません。
第三に、クラスメソッドは列挙可能ではありません。 コンストラクター関数を使用する場合は、Object.defineProperty()メソッドを使用してプロパティを列挙不可能にする必要があります。
第四に、new演算子なしでクラスコンストラクタを呼び出すと、次の例に示すようにエラーが発生します。,
Code language: JavaScript (javascript)
エラー:
Code language: JavaScript (javascript)
概要
- JavaScriptを使用します
classキーワードは新しいクラスを宣言します。 - A
class宣言は、追加の拡張機能を備えたプロトタイプ継承に対する構文上の砂糖です。
- このチュートリアルは役に立ちましたか?
- イェスノ
Leave a Reply