4

私はJSクラスを作成する何百もの方法と混同しています。プロトタイプを使うべきだという人もいれば、「悪い」ので誰もプロトタイプを使わないという人もいます。一方、CoffeeScriptはプロトタイプを使用しますが、それ自体(または何か)を返す関数で構造をラップします。オブジェクトを返す関数、オブジェクトを返す関数などを見てきました。

言語でクラスを作成するのは簡単で、フレームワークは必要ないと思います。何かが足りないのかもしれません。

メソッドを作成する方法も(少なくとも)2つあります:foo: function() {}function foo() {}。私はこれらの2つの方法を1つのクラスで見たことさえあります。問題は、最初の方法で匿名関数(オブジェクトのフィールドに割り当てられる)が作成され、デバッガーが匿名関数などによって呼び出される匿名関数でエラーが発生したと言うことです。

JSはOOPではなく機能することを目的としていることは理解していますが、概念を説明するのにクラスが最適な方法である場合もあります(たとえば、UIウィジェットがクラスになりたい場合)。

説明の少ない適切に構築されたクラスの例に感謝します。

4

3 に答える 3

3

CoffeeScript が「良い」コードを生成すると考えてよいと思います。

// Create a "class" named Foo = create a variable that contains whatever the
// self-invoking anonymous function returns (the function avoids the pollution
// the global namespace).
var Foo = (function() {

  // Create the "class" = the constructor function that is supposed to be used
  // with the "new" keyword to create instances (objects).
  function Foo() {}

  // Add a method "bar" (that's what the prototype is for!)
  Foo.prototype.bar = function(baz) {
    // Assign the value to a member variable of the current instance (this)
    this.foobar = baz;
  };

  // ...add more stuff.

  // Return only the function, every other local variable stays in this scope.
  return Foo;

})();
于 2012-08-08T09:03:18.550 に答える
3

この記事はそれをよく説明していると思います:

https://developer.mozilla.org/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript

これは、javascript のようなプロトタイプ ベースの言語でクラスを使用する正しい方法であり (私は信じています)、概念の適切な説明を提供します。私は自分のプロジェクトでこのアプローチを使用していますが、最新のすべてのブラウザーで機能するようです。

于 2012-08-08T09:17:03.600 に答える
0

CoffeeScript の使用に自信がある場合、CoffeeScript はクラスへの確実なアプローチを持ち、同時に他の OOP フレームワークと比較して非常に明確な構文を提供します。

于 2012-08-08T08:54:28.190 に答える