コアポイント
JavaScriptには従来のクラスシステムはありませんが、プロトタイプを使用しています。プロトタイプは非常に柔軟で強力ですが、初心者にとっては混乱しています。したがって、Coffeescriptは従来のクラスシステムを作成します。しかし…どうやってそれをしたのですか? Coffeescriptのスローガンは「JavaScriptだけです」であり、JavaScriptには明らかに従来のクラスシステムがありません。この記事では、Coffeescriptクラスを作成することの基本について説明します。次の投稿では、生成されたJavaScript(比較的高度な)を掘り下げて、その背後にある魔法を確認します。
親クラス私たちは主に例を通してそれを説明します。なぜなら、coffeescriptの私の紹介を読んだ人にとっては、何が起こっているのかを簡単に理解できるはずです。
Bourgeoisieというクラスを宣言します。クラスの関数宣言は次のとおりです。
class Bourgeoisie constructor: (@age, @privilegeConstant) -> worry: -> console.log("我的股票下跌了 1%!") profit: (hardWork, luck) -> return (@age - 23) * hardWork * (luck + @privilegeConstant) elite = new Bourgeoisie(29, 397) elite.worry() # "我的股票下跌了 1%!" elite.profit(20, 50) # 53640
コンストラクターにはコンストラクターと名付けられています。年齢と特権の2つのパラメーターを受け入れ、それらをインスタンス変数として自動的に割り当てます(@@はCoffeescriptでこれの代替品であり、変数はコンストラクターのパラメーターで使用されたときにインスタンスに自動的に割り当てられます)。新しいブルジョアジーを作成すると、コンストラクターはコードの例の下部と同様に、自動的に呼ばれます。他に2つの機能があります。最初の関数の心配は、パラメーターを受け入れません。 2番目の関数利益は2つの引数を受け入れ、数を返します。
functionName: (arguments) -> code
継承クラス
今、私たちはブルジョアジーから継承するクラスが欲しいです。上院議員に名前を付けます。
このクラスclass Senator extends Bourgeoisie worry: -> console.log("民调下跌了 1%!") senator = new Senator(45, 992) senator.worry() # "民调下跌了 1%!" senator.profit(6, 10) # 132264
とまったく同じです。唯一の違いは、インスタンスを構築するときに、ブルジョアジーの代わりに上院議員に電話をかけていることです。一方、心配関数は異なります。上院議員は株よりも投票について心配しているので、彼の心配は親クラスの心配をカバーしています。このオーバーライドは、以下に示す学生クラスで再び見ることができます。
class Bourgeoisie constructor: (@age, @privilegeConstant) -> worry: -> console.log("我的股票下跌了 1%!") profit: (hardWork, luck) -> return (@age - 23) * hardWork * (luck + @privilegeConstant) elite = new Bourgeoisie(29, 397) elite.worry() # "我的股票下跌了 1%!" elite.profit(20, 50) # 53640
学生の心配は、親クラスの心配(上院議員のやり方よりも劇的な)を上書きし、彼らの利益も上書きされます。ただし、上書きは親クラスの利益関数に依存します。この機能と授業料を差し引いたものを除いて。これは学生にとって困難な時期です!しかし、あなたが本当にそれから学ぶべきことは、親クラスの関数バージョンを呼び出すスーパーキーワードです。
しかし、私はプロトタイプが好きです
とても良い! Coffeescriptはあなたのためですが、それでも強力な機能を提供します。使ってみましょう!ここに私たちの前回の簡単な例があります:
functionName: (arguments) -> code
これは、一部の関数を尖った矢印に置き換えることであるため、これは馴染みのあるように見えるはずです。 CoffeeScriptはJavaScriptだけであることを忘れないでください。プロトタイプ継承システムは同じままです。構文はより簡潔であり、前回使用したBrendan Eichスタイルでプロトタイプを作成したい場合は、詳細を学ぶ必要はありません。これは、CoffeeScriptがいくつかのショートカットを適用しないということではありません。プロトタイプの代わりに::使用できます。ただし、Brendan Eichスタイルのプロトタイプでは、オブジェクト(o)メソッドで1回だけ使用する必要があります。また、拡張機能とスーパーキーワードにアクセスできますが、これらのキーワードはコンストラクターでのみ使用されます。オブジェクト(o)メソッドに再び非表示にします。
結論
coffeescriptの古典的な継承システムは、通常の開発者に利便性と快適さを提供します。さらに、Coffeescriptのクリーナー構文により、実際のプロトタイプシステムを簡単に実装できます。要するに、利益のみがありますが、害はありません。
coffeescriptクラスについてのFAQ coffeescriptのクラスの意味は何ですか?
coffeescriptでクラスを定義する方法は?
coffeescriptクラスの継承はどのように機能しますか?
CoffeeScriptの継承は、Extendsキーワードを使用して実装されます。クラスを定義すると、別のクラスを拡張することを指定できます。これは、新しいクラスが拡張されるクラスのすべてのプロパティと方法を継承することを意味します。たとえば、クラスMySubClass Extends MyClassはMyClassから継承された新しいクラスを作成します。はい、CoffeeScriptのサブクラスでメソッドをオーバーライドできます。スーパークラスのメソッドと同じ名前を持つサブクラスでメソッドを定義すると、サブクラスのメソッドが使用されます。それでもスーパークラスのメソッドを呼び出したい場合は、スーパーキーワードを使用できます。
Coffeescriptでクラスのインスタンスを作成するには、新しいキーワードに続いてクラス名を使用できます。たとえば、myInstance = new MyclassはMyClassの新しいインスタンスを作成します。
Coffeescriptクラスのコンストラクターメソッドは、クラスの新しいインスタンスが作成されたときに呼び出される特別な方法です。通常、クラスのプロパティを初期化するために使用されます。 Coffeescriptでは、コンストラクターメソッドはコンストラクターキーワードを使用して定義されます。
coffeescriptは、内蔵の私有地と方法をサポートしていません。ただし、閉鎖を使用したり、コンストラクターメソッドでプロパティと方法を定義したりすることで、同様の効果を達成することができます。これにより、クラスのインスタンス内でのみアクセスできます。
coffeescriptのクラスインスタンスでメソッドを呼び出すには、次にメソッド名を使用できます。たとえば、myInstance.mymethod()は、myInstanceオブジェクトのmymethodメソッドを呼び出します。
はい、CoffeeScriptでクラスを定義した後、クラスにプロパティとメソッドを追加できます。これを行うには、クラスのプロトタイプでそれらを定義できます。たとえば、myClass :: myNewMethod = - >
coffeescriptのクラスインスタンスのタイプを確認するには、インスタンスのオペレーターを使用できます。たとえば、MyClassのMyInstanceインスタンスは、MyInstanceがMyClassのインスタンスである場合にTRUEを返します。
以上がcoffeescriptのクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。