国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - jsでコンストラクターパターンとプロトタイプパターンを組み合わせる方法
曾經(jīng)蠟筆沒有小新
曾經(jīng)蠟筆沒有小新 2017-05-19 10:33:10
0
5
725

高度なプログラミングの書き方は以下の通りです

リーリー

では、このように書いても同じでしょうか? 唯一の違いは、コンストラクターが異なることですか?

リーリー
曾經(jīng)蠟筆沒有小新
曾經(jīng)蠟筆沒有小新

全員に返信(5)
洪濤

プロトタイプ定義(場所)をコンストラクターの內(nèi)部と外部に記述することの違いは何ですか?

2 番目の書き方では、インスタンスが作成されるたびにプロトタイプに対して操作を?qū)g行します。 重要なのは、この操作には意味がなく、この方法はすべてのインスタンスで同じであるということです。
最初の方法では、プロトタイプがコンストラクターの外側(cè)で書かれている場合、定義やメモリ割り當(dāng)ての繰り返しの問題は、形式的にもメモリ割り當(dāng)てを通じても解決できます。
メモリに書き込む最初の方法に対応し、作成したインスタンスの數(shù)に関係なく、各インスタンスは名前、年齢、職業(yè)、レッスンのみを占有します。メモリ內(nèi)には getName のコピーが 1 つだけあり、すべてのインスタンスによって共有されます。2 番目の書き方では、新しく作成されたインスタンスごとに、プロトタイプ定義を?qū)g行するために追加のスペース (スタック) が割り當(dāng)てられます。

最初の方法と 2 番目の方法でプロトタイプに値を割り當(dāng)てる方法の違いは何ですか?

大きな違いは、関數(shù)クラスが定義されると、そのデフォルトのコンストラクター プロパティがそれ自體になり、そのインスタンスはコンストラクター プロパティにアクセスするときにこの値を返すことです。

リーリー

メソッド 1 でコンストラクターを定義する必要があるのはなぜですか?

方法 1 のより賢明なアプローチは、プロトタイプを再割り當(dāng)てするのではなく、必要な屬性 getName のみをプロトタイプに追加し、それを 2 番目のメソッドの定義メソッドである Person.prototype = {getName: function() {}}),那么上例中p.constructor返回值將是 Object に変更することです。プロトタイプは上書きされません。

習(xí)慣沉默

リーリー

PHPzhong

前者の書き方はプロトタイプを書き直すだけですが、あなたの書き方はプロトタイプにメソッドを追加するだけです

世界只因有你

記述方法に応じて、各インスタンス化プロセス中にストレージ領(lǐng)域がインスタンスに再割り當(dāng)てされます。プロトタイプ パターンの意味の 1 つは、すべてのインスタンスがプロトタイプの屬性とメソッドを共有できることですが、これだけでは問題があります。 。 2 番目の點は、私は依然としてプロトタイプ オブジェクトをリテラルで記述することを好むということです。個人的には、1 つはより直観的であり、2 番目はメンテナンスに役立つと考えています。以下の通り:

リーリー

コンストラクタ屬性は必ず記述してください。この屬性が指定されていないと、プロトタイプオブジェクトが書き換えられてしまい、本來の役割を果たせません。

為情所困

プロトタイプ継承とコンストラクターには多くの違いがあります。 プロトタイプ継承はプロトタイプチェーン継承です。

プロトタイプチェーンは完璧ではなく、次の 2 つの問題を含んでいます。

質(zhì)問 1: プロトタイプ チェーンに參照型値のプロトタイプが含まれている場合、その參照型値はすべてのインスタンスで共有されます。

質(zhì)問 2: サブタイプを作成するとき (Son のインスタンスの作成など)、パラメーターをスーパータイプ (Father など) のコンストラクターに渡すことはできません。

これを考慮して、実際にはプロトタイプチェーンが単獨で使用されることはほとんどありません。

この目的のために、プロトタイプチェーンの欠點を補うために以下のいくつかの試みが行われます。

コンストラクターを借用します

プロトタイプチェーンにおける上記の 2 つの問題を解決するために、

コンストラクターの借用 (コンストラクタースチール) (古典的な継承とも呼ばれます) と呼ばれる手法の使用を開始しました。

基本的な考え方: サブタイプ コンストラクター內(nèi)でスーパータイプ コンストラクターを呼び出します。

リーリー

明らかに、コンストラクターを借用すると、プロトタイプ チェーンの 2 つの主要な問題が一気に解決されます。
まず、プロトタイプチェーン內(nèi)の參照型値の獨立性が保証され、すべてのインスタンスによって共有されなくなります。

2 番目に、サブタイプを作成するときに、親タイプにパラメータを渡すこともできます。

これに続いて、コンストラクターのみを借用する場合、コンストラクター パターンの問題を回避することはできません。メソッドはすべてコンストラクター內(nèi)で定義されているため、関數(shù)の再利用は利用できません。また、スーパータイプ ( Father など) も使用できません。これを考慮すると、コンストラクターを借用する手法が単獨で使用されることはほとんどありません。詳細(xì)については、「JS プロトタイプ チェーンと継承」を參照してください。気に入ったらクリックしてください。あなた!

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート