問題タブ [prototypal-inheritance]
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.
javascript - 特定の順序でファイルをインクルードする必要なしに、プロトタイプの継承をどのように活用しますか?
JavaScript を開発するとき、私は JavaScript コードを別々のファイルに分割してから、スクリプトを実行してファイルを連結し、結果のファイルを圧縮またはパックする傾向があります。最後に、本番サイトに含める必要があるファイルが 1 つあります。
このアプローチは通常うまくいきましたが、プロトタイプの継承に関する問題に遭遇し始めました。具体的には、あるクラスが別のクラスから継承する場合、継承が機能するためには、親クラスのファイルが既に含まれている必要があります。私が使用している連結スクリプトがファイルでいっぱいのディレクトリを単純に連結している場合、子クラスは親クラスの前にコード内で発生する可能性があります。このような:
parent_class.js
child_class.js
これが機能する唯一の方法は、parent_class.js が child_class.js の前に含まれている場合です。これは、連結スクリプトが親コードの前に子コードを配置する場合には発生しない可能性があります。
機能が同じになるようにこのコードを記述する方法はありますが、コードを記述する順序は重要ではありませんか?
編集:名前空間も使用していることを忘れていたので、それもコードに追加しました。これにより、少し変更される可能性があります。
javascript - JavaScript のプロトタイプ継承
Douglas Crockford の YUI シアターでの講演を見ていて、JavaScript の継承について質問があります...
Douglas は、「Hoozit」が「Gizmo」を継承していることを示すために、次の例を示しています。
なぜ彼はHoozit.prototype = new Gizmo()
代わりに書いているのHoozit.prototype = Gizmo.prototype
ですか?
これら2つに違いはありますか?
javascript - Javascript プロトタイプの継承?
私はそれをよりよく理解するためにjsでいくつかの継承を行ってきましたが、私を混乱させる何かを見つけました.
new キーワードを使用して「コンストラクター関数」を呼び出すと、その関数のプロトタイプへの参照を含む新しいオブジェクトが取得されることを私は知っています。
また、プロトタイプの継承を行うには、コンストラクター関数のプロトタイプを、「スーパークラス」にしたいオブジェクトのインスタンスに置き換える必要があることも知っています。
だから私はこれらの概念を試すためにこのばかげた例を作りました:
(これは Firebug のコンソールで行われました)
1) すべての新しいオブジェクトにクリエーター関数のプロトタイプへの参照が含まれている場合、fido.prototype が定義されていないのはなぜですか?
2) 継承チェーンは [obj] -> [constructor] -> [prototype] ではなく [obj] -> [prototype] ですか?
3) オブジェクト (fido) の「プロトタイプ」プロパティはチェックされていますか? もしそうなら...なぜ「deathBite」は(最後の部分で)未定義なのですか?
javascript - Javascript拡張基本型(プロトタイプ継承)
DouglasCrockfordの「JavascriptTheGoodParts 」を読み始めたところです。ここでは、彼が基本タイプの拡張について説明しています。
これを行った直後に、addMethodは、 String、Numberなどのすべての基本オブジェクトで使用できるようになります。
Object.prototypeに追加していないのに、なぜこれが発生するのですか?
Function.prototypeにメソッドを追加すると、すべての基本オブジェクトに反映されるのはなぜですか?
actionscript-3 - インスタンスを作成する以外に、ActionScript で ClassA が ClassB から派生しているかどうかを確認する方法は?
あるクラスが別のクラスから (直接的または間接的に) 派生するかどうかを判断する必要があります。
できます
しかし、祖先をテストするためだけにインスタンスを作成するのは嫌いです。if (ClassA is ClassB) が機能することを期待しましたが、機能しないようです。
ASヘルプ状態
isPrototypeOf(theClass:Object):Boolean
オブジェクト クラスのインスタンスが、
パラメータとして指定されたオブジェクトのプロトタイプ チェーンにあるかどうかを示します。
私は実際には ActionScript のプロトタイプを理解していません (気が狂ってしまうかもしれません) が、Class オブジェクトが継承情報を利用する何らかの方法を持っていることを願っています。
ありがとう
javascript - JavaScript で継承を実行する
C# のように継承を実行できないことはわかっていますが、インターネット上で継承が可能であると言及されているのを見てきました。プレーンな JavaScript コードを使用することができない場合、 Ext JSを使用することは可能でしょうか。
javascript - JavaScriptのプロトタイプベースの継承の良い例
私は10年以上OOP言語でプログラミングしてきましたが、今はJavaScriptを学んでおり、プロトタイプベースの継承に遭遇したのはこれが初めてです。私は良いコードを勉強することで最も早く学ぶ傾向があります。プロトタイプの継承を適切に使用するJavaScriptアプリケーション(またはライブラリ)のよく書かれた例は何ですか?そして、プロトタイプの継承がどのように/どこで使用されているかを(簡単に)説明できますか?それで、どこから読み始めればよいかわかりますか?
javascript - JavaScript がプロトタイプの継承を使用して実装されたのはなぜですか?
JavaScript の継承がどのように機能するかを説明する記事や投稿はたくさんありますが、なぜ JavaScript は従来の継承ではなくプロトタイプの継承を使用して実装されたのでしょうか?
私は JavaScript が大好きなので、それが悪いと言っているわけではありません...ただ興味があるだけです。
javascript - JavaScript プロトタイプの継承について混乱している
本「JavaScript the definitive guide 5 edition」のセクション 9.2 プロトタイプと継承で、次の言葉を見つけました。
前のセクションでは、new 演算子が新しい空のオブジェクトを作成し、そのオブジェクトのメソッドとしてコンストラクター関数を呼び出すことを示しました。ただし、これは完全な話ではありません。空のオブジェクトを作成した後、 new はそのオブジェクトのプロトタイプを設定します。オブジェクトのプロトタイプは、そのコンストラクター関数のプロトタイプ プロパティの値です。すべての関数には、関数の定義時に自動的に作成および初期化されるプロトタイプ プロパティがあります。プロトタイプ プロパティの初期値は、単一のプロパティを持つオブジェクトです。このプロパティはコンストラクターと呼ばれ、プロトタイプが関連付けられているコンストラクター関数を参照します。(第 7 章のコンストラクター プロパティを思い出すかもしれません。これが、すべてのオブジェクトにコンストラクター プロパティがある理由です。) このプロトタイプ オブジェクトに追加するプロパティは、コンストラクターによって初期化されたオブジェクトのプロパティのように見えます。
では、それが本当なら、どのようにしてプロトタイプの継承が存在するのでしょうか? つまり、コンストラクター関数のプロトタイプ オブジェクトが最初にコンストラクター プロパティを持っているとしましょう。プロトタイプ オブジェクト自体がオブジェクトであるため、そのコンストラクターを決定するために、 をよく使用しますprototype_object.constructor
。しかし、 にはprototype_object
すでにプロパティ自体があり、プロトタイプが関連付けられているコンストラクター関数をconstructor
指しています。この状況で、どのように継承が存在できるのでしょうか?