1

私は初心者プログラマーですが、もっと上手く、または少なくとも違ったやり方でできることがすでにいくつか見られました。たとえば、次のように、クラスを使用して新しいオブジェクトを作成できます。

var newObject = new className(params);

しかし、関数はオブジェクトを返すことができるので、これは本当に必要ですか?つまり、次のコードを使用すると、新しいキーワードを削除することもできます。

var newFruit = function (confobj) {
  var instance = {};

  //Common to all fruits
  instance.edible = true;

  //Custom settings
  instance.color = confObj.color;
  instance.shape = confObj.shape;
  instance.sweetness = confObj.sweetness;
  instance.sweet = (instance.sweetness > 0);

  return instance;
};

var banana = newFruit({
  color: 'yellow',
  shape: 'long',
  sweetness: 8
});

では、例で提供されているようなコードを使用する代わりに、新しいキーワードを必要とするJSクラスを使用することの利点は何でしょうか。

4

1 に答える 1

3

javascriptにはクラスはありません。

コンストラクター(つまり、new演算子で呼び出されるように設計された関数)は、オブジェクトの複数のインスタンスが必要な場合に便利です。各オブジェクトに重複するメソッドを追加するのではなく、継承を使用してメソッドを共有することには、効率とメンテナンスの利点があります。別の方法は、ES5 Object.createを使用することです。これは、多かれ少なかれ。と同じことを行いnewます。

オブジェクトのインスタンスが1つだけ必要な場合は、コンストラクターは必要ありません。クロージャーは、「プライベート」変数とメソッドに使用できます。

アプリケーションに適した戦略を使用してください。大規模なプロジェクトでは、多くの場合、上記を組み合わせて使用​​します。「最良の」解決策はありません。

于 2012-09-28T05:08:55.573 に答える