この感嘆符は、深刻な雰囲気を緩和し、今日お話しするトピックである「JavaScript オブジェクト指向プログラミング」につながります。次に、オブジェクト指向のいくつかの主要なキーワードであるカプセル化、継承、ポリモーフィズムに焦点を当てます。
カプセル化: JavaScript でオブジェクトを作成するモードでは、クロージャが実際のカプセル化であると個人的に考えています。そのため、最初にクロージャについて簡単に紹介します。次の例を見てください:
どのモードが優れているのかと疑問に思う人もいるかもしれません。これはなんと言いますか?どちらの方法にもメリットとデメリットがあるので、併用してください。つまり、外部オブジェクトから直接アクセスできないものは、クロージャを使用してカプセル化するのが原則です。 「必ず」という4つの言葉は非常に奥深く、継続して練習することでしか本当の意味を知ることができません!
継承: これについて言及するとき、ついでにもう 1 つ付け加えておきます。クロージャのカプセル化の欠点はサブクラスの導出に役立たないため、クロージャには危険が伴い、カプセル化には注意が必要です。直観のために、次の例のオブジェクトの作成方法では「ドアを開ける」モードを採用しています。
JavaScriptにおける継承は、大きく「クラス継承」「プロトタイプ継承」「メタクラス」の3つの方法に分けられます。以下に、3 種類の継承方法の原理を簡単に紹介します。
A. クラスの継承: これは、主流のフレームワークで一般的に使用される継承メソッドです。次の例を参照してください。
明らかに、プロトタイプ継承のコアです。はクローン関数であり、プロトタイプ チェーンと同じ原理ですが、違いは、スーパー クラスを直接複製するため、サブクラスがスーパー クラスのすべてのプロパティとメソッドを継承することです。特に、このタイプの継承では、コンストラクターを作成し、対応する属性とメソッドを定義するだけで、サブクラス内で属性とメソッドを参照することができます。
C.一般的に使用されるメソッドをより汎用性の高いものにする メソッドは関数内に均一にカプセル化され、次の関数を通じてこれらのメソッドを使用するクラスにディスパッチされます。さまざまなクラスに必要なメソッドを選択的に渡すこともできます。
コードをコピー
コードは次のとおりです:
ボタンをクリックすると、ポップアップ ボックスは表示されません。インスタンス オブジェクトの属性が表示されます。これは、現在のコンテキストが入力 HTML タグである必要があるためですが、このタグには getName がありません。 ! 属性なので、当然この属性の属性値は出力できません。この例から、実行コンテキストは実行中に決定され、いつでも変更できることが簡単にわかります。
もちろん、上でコメントアウトしたコードを削除し、getName メソッドを取得する呼び出しを通じてこの実行コンテキストを変更することもできます。 apply メソッドでも実行コンテキストを変更する機能を実現できますが、より美しい実装メソッドのバインドがプロトタイプ フレームワークで見つかりました。このメソッドの実装を見てみましょう。私たちの先祖の偉大さに感心するしかありません...
コードをコピーします
コードは次のとおりです。 Function.prototype.bind = function(obj) {
var method = this,
temp = function() {
return method.apply (obj, argument);
} ;
}
これを明確に理解できれば、簡単なスクリプト フレームワークを作成できると思います。近い将来、マスターにアップグレードできると思います。理解していなくても、心配する必要はありません。オブジェクト指向は本質的に少し抽象的です。もっと練習すれば大丈夫です。
とりあえずこの記事を書きましょう。次の記事では、JavaScript のデザイン パターンについて説明します。ご期待ください。