[解決済み] JavaScriptでクラスを定義するために使用できるテクニックと、そのトレードオフとは?
質問
私は、今取り組んでいるような大規模なプロジェクトでは、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に傾倒しているようです。
外部ライブラリに依存しない、唯一の方法として、私が書いた方法は、ほぼそれです。
関連
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
[解決済み】ExpressJS : res.redirect()が期待通りに動かない?
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] C++のstructとclassの違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
jsを使った簡単な照明スイッチのコード
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
JavaScriptのStringに関する共通メソッド
-
JavaScriptのgetElementById()メソッド入門