coffeescriptのクラス

William Shakespeare
William Shakespeareオリジナル
2025-02-24 10:31:14632ブラウズ

Classes in CoffeeScript

コアポイント

    JavaScript自体はそうではありませんが、
  • coffeescriptは従来のクラスシステムを実装しています。これにより、初心者は経験豊富なプログラマーのプロトタイプの柔軟性を保持しながら理解しやすくなります。
  • coffeescriptクラスは継承をサポートし、親クラスのプロパティと方法を自動的に継承するサブクラスの作成を可能にします。 サブクラスは、「上院議員」および「学生」のサブクラスの「心配」および「利益」関数に示されているように、親クラス関数をオーバーライドすることもできます。
  • coffeeScriptは便利で構文の構成ですが、「プロトタイプ」へのショートカットとして「::」を使用し、コンストラクターに「拡張」と「スーパー」キーワードを使用するなど、JavaScriptを実装するプロトタイプシステムを許可します。

JavaScriptには従来のクラスシステムはありませんが、プロトタイプを使用しています。プロトタイプは非常に柔軟で強力ですが、初心者にとっては混乱しています。したがって、Coffeescriptは従来のクラスシステムを作成します。しかし…どうやってそれをしたのですか? Coffeescriptのスローガンは「JavaScriptだけです」であり、JavaScriptには明らかに従来のクラスシステムがありません。この記事では、Coffeescriptクラスを作成することの基本について説明します。次の投稿では、生成されたJavaScript(比較的高度な)を掘り下げて、その背後にある魔法を確認します。

親クラス

私たちは主に例を通してそれを説明します。なぜなら、coffeescriptの私の紹介を読んだ人にとっては、何が起こっているのかを簡単に理解できるはずです。

Bourgeoisieというクラスを宣言します。クラスの関数宣言は次のとおりです。
<code class="language-coffeescript">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</code>

コンストラクターにはコンストラクターと名付けられています。年齢と特権の2つのパラメーターを受け入れ、それらをインスタンス変数として自動的に割り当てます(@@はCoffeescriptでこれの代替品であり、変数はコンストラクターのパラメーターで使用されたときにインスタンスに自動的に割り当てられます)。新しいブルジョアジーを作成すると、コンストラクターはコードの例の下部と同様に、自動的に呼ばれます。他に2つの機能があります。最初の関数の心配は、パラメーターを受け入れません。 2番目の関数利益は2つの引数を受け入れ、数を返します。

<code class="language-coffeescript">functionName: (arguments) ->
  code</code>

継承クラス

今、私たちはブルジョアジーから継承するクラスが欲しいです。上院議員に名前を付けます。

このクラス

<code class="language-coffeescript">class Senator extends Bourgeoisie
  worry: ->
    console.log("民调下跌了 1%!")

senator = new Senator(45, 992)
senator.worry() # "民调下跌了 1%!"
senator.profit(6, 10) # 132264</code>
bourgeoisieは拡張されます。つまり、親クラスのすべての機能があります。コンストラクターは利益関数

とまったく同じです。唯一の違いは、インスタンスを構築するときに、ブルジョアジーの代わりに上院議員に電話をかけていることです。一方、心配関数は異なります。上院議員は株よりも投票について心配しているので、彼の心配は親クラスの心配をカバーしています。このオーバーライドは、以下に示す学生クラスで再び見ることができます。

<code class="language-coffeescript">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</code>

学生の心配は、親クラスの心配(上院議員のやり方よりも劇的な)を上書きし、彼らの利益も上書きされます。ただし、上書きは親クラスの利益関数に依存します。この機能と授業料を差し引いたものを除いて。これは学生にとって困難な時期です!しかし、あなたが本当にそれから学ぶべきことは、親クラスの関数バージョンを呼び出すスーパーキーワードです。

しかし、私はプロトタイプが好きです

とても良い! Coffeescriptはあなたのためですが、それでも強力な機能を提供します。使ってみましょう!ここに私たちの前回の簡単な例があります:

<code class="language-coffeescript">functionName: (arguments) ->
  code</code>

これは、一部の関数を尖った矢印に置き換えることであるため、これは馴染みのあるように見えるはずです。 CoffeeScriptはJavaScriptだけであることを忘れないでください。プロトタイプ継承システムは同じままです。構文はより簡潔であり、前回使用したBrendan Eichスタイルでプロトタイプを作成したい場合は、詳細を学ぶ必要はありません。これは、CoffeeScriptがいくつかのショートカットを適用しないということではありません。プロトタイプの代わりに::使用できます。ただし、Brendan Eichスタイルのプロトタイプでは、オブジェクト(o)メソッドで1回だけ使用する必要があります。また、拡張機能とスーパーキーワードにアクセスできますが、これらのキーワードはコンストラクターでのみ使用されます。オブジェクト(o)メソッドに再び非表示にします。

結論

coffeescriptの古典的な継承システムは、通常の開発者に利便性と快適さを提供します。さらに、Coffeescriptのクリーナー構文により、実際のプロトタイプシステムを簡単に実装できます。要するに、利益のみがありますが、害はありません。

coffeescriptクラスについてのFAQ coffeescriptのクラスの意味は何ですか?

coffeescriptクラスは、コードの整理と構築に役立つ基本的な概念です。特定のプロパティとメソッドを備えたオブジェクトを作成する方法を提供します。クラスにより、複雑なデータ構造の作成が容易になり、1つの場所でデータと機能をカプセル化する方法が提供されます。また、継承をサポートし、既存のクラスから継承する新しいクラスを作成できるようにします。これにより、コードの複製を大幅に削減し、コードの保守性を向上させることができます。

coffeescriptでクラスを定義する方法は?

CoffeeScriptでクラスを定義するのは簡単です。クラスキーワードに続いてクラス名が続きます。たとえば、クラスMyClass。その後、 @シンボルを使用して、クラスのインスタンスを参照して、クラス内のプロパティとメソッドを定義できます。たとえば、@MyPropertyはクラスのプロパティを定義し、@mymethod: - &gt;

coffeescriptクラスの継承はどのように機能しますか?

CoffeeScriptの継承は、Extendsキーワードを使用して実装されます。クラスを定義すると、別のクラスを拡張することを指定できます。これは、新しいクラスが拡張されるクラスのすべてのプロパティと方法を継承することを意味します。たとえば、クラスMySubClass Extends MyClassはMyClassから継承された新しいクラスを作成します。

coffeescriptのサブクラスでメソッドをオーバーライドできますか?

はい、CoffeeScriptのサブクラスでメソッドをオーバーライドできます。スーパークラスのメソッドと同じ名前を持つサブクラスでメソッドを定義すると、サブクラスのメソッドが使用されます。それでもスーパークラスのメソッドを呼び出したい場合は、スーパーキーワードを使用できます。

coffeescriptでクラスのインスタンスを作成する方法は?

Coffeescriptでクラスのインスタンスを作成するには、新しいキーワードに続いてクラス名を使用できます。たとえば、myInstance = new MyclassはMyClassの新しいインスタンスを作成します。

Coffeescriptクラスのコンストラクターメソッドの目的は何ですか?

Coffeescriptクラスのコンストラクターメソッドは、クラスの新しいインスタンスが作成されたときに呼び出される特別な方法です。通常、クラスのプロパティを初期化するために使用されます。 Coffeescriptでは、コンストラクターメソッドはコンストラクターキーワードを使用して定義されます。

coffeescriptクラスで私有地と方法を定義できますか?

coffeescriptは、内蔵の私有地と方法をサポートしていません。ただし、閉鎖を使用したり、コンストラクターメソッドでプロパティと方法を定義したりすることで、同様の効果を達成することができます。これにより、クラスのインスタンス内でのみアクセスできます。

coffeescriptのクラスインスタンスでメソッドを呼び出す方法は?

coffeescriptのクラスインスタンスでメソッドを呼び出すには、次にメソッド名を使用できます。たとえば、myInstance.mymethod()は、myInstanceオブジェクトのmymethodメソッドを呼び出します。

coffeescriptでクラスを定義した後、クラスにプロパティとメソッドを追加できますか?

はい、CoffeeScriptでクラスを定義した後、クラスにプロパティとメソッドを追加できます。これを行うには、クラスのプロトタイプでそれらを定義できます。たとえば、myClass :: myNewMethod = - &gt;

coffeescriptでクラスインスタンスのタイプを確認する方法は?

coffeescriptのクラスインスタンスのタイプを確認するには、インスタンスのオペレーターを使用できます。たとえば、MyClassのMyInstanceインスタンスは、MyInstanceがMyClassのインスタンスである場合にTRUEを返します。

以上がcoffeescriptのクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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