1. ホーム
  2. javascript

[解決済み] JavaScriptでクラスを定義するために使用できるテクニックと、そのトレードオフとは?

2022-03-14 16:47:43

質問

私は、今取り組んでいるような大規模なプロジェクトでは、OOPを使用することを好んでいます。私はJavaScriptでいくつかのクラスを作成する必要がありますが、私が間違っていなければ、それを行うために行くために少なくとも2つの方法があります。どのような構文で、なぜそのような方法で行われるのでしょうか?

サードパーティのライブラリの使用は、少なくとも最初は避けたいと思います。
他の答えはないかと探していたら、こんな記事を見つけました。 JavaScriptによるオブジェクト指向プログラミング、パート1:継承 - Doc JavaScript は、JavaScriptでのオブジェクト指向プログラミングについて解説しています。継承にもっと良い方法はないのでしょうか?

どのように解決するのか?

ここでは、外部ライブラリを使用せずに行う方法を紹介します。

// Define a class like this
function Person(name, gender){

   // Add object properties like this
   this.name = name;
   this.gender = gender;
}

// Add methods like this.  All Person objects will be able to invoke this
Person.prototype.speak = function(){
    alert("Howdy, my name is" + this.name);
};

// Instantiate new objects with 'new'
var person = new Person("Bob", "M");

// Invoke methods like this
person.speak(); // alerts "Howdy, my name is Bob"

さて、本当の答えはもっとずっと複雑です。例えば、JavaScriptにはクラスというものは存在しません。JavaScriptでは prototype -をベースにした継承スキームです。

さらに、人気のあるJavaScriptライブラリには、JavaScriptでクラスのような機能を近似させる独自のスタイルを持っているものが多数あります。少なくとも プロトタイプ jQuery .

これらのうちどれが"best"であるかを決めることは、Stack Overflowで聖戦を始めるのに最適な方法です。もしあなたがJavaScriptを多用する大規模なプロジェクトに着手しているなら、人気のあるライブラリを学び、彼らのやり方でやる価値は間違いなくあります。私はPrototype派ですが、Stack OverflowはjQueryに傾倒しているようです。

外部ライブラリに依存しない、唯一の方法として、私が書いた方法は、ほぼそれです。