0

私は JavaScript の OOP について少し調べていて、prototypeオブジェクトの使用について少し学んでいました。この記事(非常に良い読み物です) で、著者は、メソッドを JavaScript クラスの属性として宣言することと、クラスのプロトタイプでメソッドを宣言することについて、次のように述べています。

これは実際には最適な方法ではありません。より良い方法は、Person.prototype でメソッドを定義することです。なぜこれが良いのですか?誰?誰?ボイラー?最初のバージョンでは、人物を作成するたびに新しい sayHi 関数が作成されますが、2 番目のバージョンでは、1 つの sayHi 関数のみが作成され、作成されたすべての人物間で共有されます。プロトタイプはそれらの親です。したがって、プロトタイプでメソッドを宣言すると、メモリ効率が向上します。

これを読んだ後、言語で OOP を緩和するために時折使用する JavaScript フレームワークClassyについて考え始めました。彼らのドキュメントに示されている例と、私がこれまでに書いたほとんどすべての Classy コードで、私は常にクラスのメソッドをその属性として直接宣言しました (外側ではなく中括弧の間のように)。Classy クラスのメソッドを直接宣言することは、クラスの関数内にメソッドを直接追加する通常の JavaScript クラスではなく、オブジェクト表記法 (JSON) を介して行われることに気付きました。

私が疑問に思っているのは、Classy で作成されたオブジェクトが、クラスのプロトタイプに対して宣言されたメソッドのパフォーマンスの節約を既に利用しているかどうかです。Classy のドキュメントと同じ方法でクラス メソッドを宣言する場合、メソッドはクラスのインスタンスごとに宣言されますか、それともクラスのすべてのインスタンスが共有する 1 つのメソッドとして宣言されますか? 前者の場合、Classy クラスのプロトタイプでメソッドを宣言できますか、または宣言することになっていますか?

紛らわしく聞こえたらごめんなさい。

4

0 に答える 0