問題タブ [prototypal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
1554 参照

javascript - (オープン ソース) JavaScript プロトタイプ OO の例

バウンティ 編集:

純粋なプロトタイプ OO パラダイム (Self を考えてください)で記述されたコードを探しています。プロトタイプの OO と従来の OO の混合物ではありません。一般的な OO ラッパーは見たくありませんが、単にプロトタイプの OO 手法を使用し、プロトタイプの OO 手法のみを使用するだけです。

参照関連の質問:

JavaScript の典型的なオブジェクト指向

上記の質問では、主に焦点を当てました

このようなプロトタイプの OO を記述できますか?

コンストラクターと初期化ロジックが必要ですか、代替手段は何ですか?

新しい質問:

基本的に、大規模なオープン ソース プロジェクトで javascript プロトタイプOO の良い例はありますか?

説明:

プロトタイプ OOの意味を明確にする必要があります。

  • クラスはありません。オブジェクトしかありません。
  • クラスの概念のエミュレーションはまったくありませ。ここでも、新しいオブジェクトを作成するためのオブジェクトとオブジェクトのクローンしかありません。

プロトタイプ OO のさらなる説明:

JavaScript のプロトタイプの OO と従来の OO エミュレーションの違いは、非常にグレーな領域です。古典的なオブジェクト指向を避けることを重視しているわけではありません。私は、古典的な OO エミュレーションとプロトタイプ OO の (おそらくより最適な) 組み合わせを学ぶことなく、それ自体でアカデミックな方法でプロトタイプ OO を学びたいと考えています。

これが、私がクラスを「禁止」する理由です。これらの手法を純粋な方法で確認し、独自の OO ツール キットを拡張できるようにするためです。

例:

jQuery などの一般的な例は、2 番目の基準を満たしていません。オブジェクトは、1 つのjQuery大きなクラス エミュレーションです。既存のオブジェクトを複製するのではなく、クラスから新しいオブジェクトを作成することに重点を置いています。

「純粋な」プロトタイプ OOの使用例を実際に知っていれば、お見せしたでしょう。JavaScript OO の 99% は、古典的なエミュレーションの影響を大きく受けていると思います。

ボーナスポイント

もしも

  • 十分にコメント/文書化されています
  • 単体テストあり
  • github にあります。

また、単純な Hello World アプリケーションを超えるプロトタイプの OO コードの作成方法に関する記事/チュートリアルと例も受け付けます。

0 投票する
3 に答える
3613 参照

javascript - Javascriptクロスブラウザでオブジェクトを削除する方法

これはChromeで機能しますが、Firefoxは何らかの理由でこれを参照してエラーをスローしています。メソッド内でこのオブジェクトを強制終了するためのより良い方法はありますか?

エラー:

0 投票する
2 に答える
135 参照

javascript - カスタム .on()/.bind() JavaScript を記述する最もパフォーマンスの高い方法

私はたくさんの小さなライブラリとモジュールを書いていますが、通常、これらのライブラリとモジュールにはいくつかのイベントが関連付けられています。今まで、私はこれらを次のように書いてきました(かなり短縮されています):

次に、ユーザーは次のようなことを行います。

これを行うためのよりパフォーマンスの高い方法はありますか、それともこれを実装する標準的な方法ですか? この動作をサポートするために、任意の JS プロジェクトにドロップできるシンプルな API が必要です。

0 投票する
1 に答える
204 参照

javascript - プロトタイプの継承のための良い本を提案できますか?

私はJavascript:The Good Partsを読み、現在Javascriptパターンを読んでいますが、ProtoypalInheritanceについて詳しく読みたいと思います。JSの本である必要はありませんが、そうすればボーナスになります。それがどのように存在したのか、そしてそれが何であるかについての単一の章を読むのではなく、その重要な信条は何であるかについてもっと読みたいと思います。助言がありますか?

0 投票する
3 に答える
1134 参照

javascript - 適切なプロトタイプの継承

それで、私は実際にインターネット全体を調べて、javascript でプロトタイプの継承を設定するさまざまな方法を見つけました。

それらのいくつかは使用しますcall()
それらのいくつかは、次の構文を使用します: var rabbit.prototype = new Animal.
プロトタイプを変更した後にコンストラクターを変更するものもあれば、変更しないものもあります。
継承を設定するのに役立つ小さな関数を設定するものもあります。

誰かがこれに光を当ててもらえますか?これについては多くの投稿がありますが、良いものは 2 年以上前のもので、私の心に大きな混乱を引き起こしました。
javascriptでプロトタイプの継承を実際に適切に設定する方法を一度だけ知りたいです。

シンプルなら尚更!

0 投票する
1 に答える
318 参照

javascript - Javascriptプロトタイプのインスタンス化と疑似古典的なインスタンス化

プロトタイプと疑似古典のインスタンス化に関する他の記事をいくつか読みましたが、まだいくつか質問があります。説明のために以下のコードを含めました。

質問は次のとおりです。

  1. Person は実質的に Human と同じですか?
  2. ジョンとアリスは本質的に同じですか?
  3. ある方法と別の方法では、どのような副作用が生じる可能性がありますか?
  4. 注意すべき重要なパフォーマンスの問題はありますか?

    --

    /li>
0 投票する
1 に答える
94 参照

javascript - JavaScript プロトタイプ継承チェーン: 上位レベルのプロパティとメソッドにアクセスするための「その」手法?

プロトタイプ継承を使用する場合、プロトタイプ チェーンの 1 レベル上のプロパティとメソッドにアクセスする必要があります。

これは受け入れられる技術ですか?

0 投票する
1 に答える
247 参照

javascript - JavaScript プロトタイプの継承: 子のゲッター/セッターへの呼び出しが親に影響するのはなぜですか?

以下のフィドル/コードを参照してください: http://jsfiddle.net/kmiklas/3YdTA/4/

質問:

  • 子の setter 関数への呼び出し (例では、への呼び出しObject.create(99)) が親の設定を変更するのはなぜですか? この関数をorangeのコンテキストで呼び出しましたが、 redの値も変更していることに注意してください。
  • さらに重要なのは、継承されたゲッター/セッター関数を親ではなく子に適用するにはどうすればよいでしょうか?
  • ここで何が欠けていますか?

0 投票する
2 に答える
436 参照

javascript - Javascript Arrays プロトタイプを Max/Min で拡張して値を見つける

Javascript 配列で最大値/最小値を見つける方法のさまざまな方法を見ると、Array オブジェクト自体のプロトタイプを拡張していることがよくあります。だから持っている:

しかし、私はしばしば以下のようにします:

これにより、Array オブジェクト自体にパラメーターを指定せずに max() を呼び出すことができます。個人的には問題は見られませんが、何かが欠けているのではないかと考え続けています。この方法には見落としている大きな問題がありますか? として使用しても安全Array.max(arrayhere)ですか?

編集: 最初の例ではネイティブ Javascript Array オブジェクトで静的メソッドを作成し、2 番目の例では Arrays プロトタイプを拡張すると言うのは正しいですか?