問題タブ [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 - Extjs:コンストラクターまたはinitComponentを介してクラスを拡張しますか?
extjs では、 を介していつでも extjs クラスを拡張できますconstructor()
。から派生するクラスについては、Component
を介して拡張することもできますinitComponent()
。
普遍的な拡張方法のように見えるのにinitComponent
、なぜ多くのコードが を介して拡張されるのか疑問に思っています。よりも明確な利点がありますかconstructor
?initComponent
constructor
javascript - JavaScript で [] 演算子を使用して Array から継承されたオブジェクトにアクセスするにはどうすればよいですか?
Array から継承された新しい JavaScript オブジェクトを作成する必要がある状況があります。次のコードを使用しています。
非常に興味深いことに、 [] 操作は役に立たないようで、コンソール出力は次のようになります。
ここで何が欠けていますか?
javascript - イベント ハンドラーとして使用される Javascript プロトタイプ関数内の「this」の値
Javascript でプロトタイプの継承を使用しようとしています。以下の私のコードの問題は、ボタンがクリックされMyNamespace.MyObj.myEventHandler
て呼び出されたときに、 の値がthis
のインスタンスでMyNamespace.MyObj
はなく、クリックされたボタンであることです。
私は物事を間違って構造化していますか (より良い方法はありますか)? this
呼び出し元のボタンではなく、オブジェクトのインスタンスであることをどうにかして確認できますか?
これは、私がプロトタイプの継承を学ぶために使用している非常に単純な例です。上記のコードの実際の機能は jQuery で簡単に実行できること、またはオブジェクト リテラルまたはモジュール パターンを使用できることを認識していますが、現時点では特定の機能を実装するのではなく、プロトタイプの継承を学ぶことに本当に興味があります。 .
javascript - EXTENDS の課題: プリプロセッサ関数マクロとクラスのような oop
バックグラウンド
私は C プリプロセッサを使用して、複数のファイルとビルド ターゲットを含むセミ大規模な JavaScript プロジェクトを管理および「コンパイル」しています。これにより、javascript 内から 、 、 など#include
の#define
Cプリプロセッサ ディレクティブに完全にアクセスできます。#ifdef
サンプル コードをテストできるように、サンプル ビルド スクリプトを次に示します。
src
とbuild
ディレクトリを作成し、.js ファイルを に配置しますsrc
。
便利なマクロ
もともと、私はプリプロセッサが#include
数#ifdef
秒間必要だったのですが、便利なマクロもいくつかあるといいのではないかと考えました。実験が続いた。
かっこいいので、次のように書くことができます。
そして、次のように展開されます。
foreach はどうですか?
このマクロの呼び出しに続く中括弧を邪魔しないようにv=o[k]
、条件の中に忍び込む方法に注目してください。if
クラスライクな OOP
NAMESPACE マクロと、あいまいだが便利な js パターンから始めましょう...
new function(){ ... }
いくつかのきちんとしたことをします。()
匿名関数をコンストラクターとして呼び出すため、それを呼び出すために最後に余分なものは必要なく、this
その中でコンストラクターによって作成されるオブジェクト、つまり名前空間自体を参照します。これにより、名前空間内に名前空間をネストすることもできます。
クラスのような OOP マクロの完全なセットを次に示します。
ご覧のとおり、これらのマクロはVariable Object
(便宜上) とthis
(必要に応じて) の両方で多くのことを定義します。コード例を次に示します。
エクステンドはどうですか?
これは私に質問をもたらします... EXTENDS をマクロとして実装して、通常の「プロトタイプのクローンを作成し、コンストラクターのプロパティをコピーする」js プロトタイプの継承をラップするにはどうすればよいでしょうか? ばかげているクラス定義の後に EXTENDS を表示することを要求する以外に、それを行う方法を見つけられませんでした。この実験には EXTENDS が必要です。そうしないと役に立ちません。同じ結果が得られる限り、他のマクロを自由に変更してください。
編集 - これらは EXTENDS に役立つ場合があります。完全を期すためにここにリストします。
ヘルプ、アドバイス、または活発な議論をよろしくお願いします。:)
javascript - Crockford のプロトタイプ継承方法を使用した大規模な JavaScript プロジェクトの例はどこにありますか?
私は Crockford がJavaScript をより明らかに原型的な方法で使用することを推し進めていることを読んだことがあります(「新しい」キーワードを使用せずに、オブジェクトを複製して新しいオブジェクトを作成します)。しかし実際には、このスタイルを大規模なプロジェクトに使用している人を見たことがありません。
このスタイルを使用する大規模なプロジェクトの例はどこにありますか?
powershell - Powershellのプロトタイプの継承?
PowershellでPSObjectのプロトタイプの継承を実装するライブラリまたはプロジェクトはありますか?
actionscript-3 - Actionscript-3プロトタイプの継承
基本的に、Objectクラスのコンストラクターを変更したいと思います。
すべてのクラスがObjectを拡張するので、任意のクラスの任意のオブジェクトがインスタンス化されるたびに、変更された関数が
呼び出されること を願っています。
だから私はこれをしました:
トレースステートメントにブレークポイントを設定します。
しかし、それだけではありません。
トレースステートメントも実行されませんでした。
解決策/提案はありますか?
javascript - ES5のObject.defineProperty?
列挙を構成可能にする「新しい」Object.create に関する投稿を見ています。ただし、これは Object.defineProperty メソッドに依存しています。このメソッドのクロス ブラウザー実装が見つかりません。
古い Object.create の作成に行き詰っていませんか? IE6/7で動かないものは書けません。
javascript - Javascript:プロトタイプの継承とスーパーコンストラクター
継承オブジェクトからスーパーコンストラクターを呼び出すにはどうすればよいですか?たとえば、私は単純な動物の「クラス」を持っています:
Animalを継承するが、レッグの数を乱数に設定する「Chimera」クラスを作成したい(コンストラクターでレッグの最大数を提供します。これまでのところ、これがあります。
動物のコンストラクターを呼び出す方法は?ありがとう
javascript - javascript の継承、「親」の変数
私は初めてOO JavaScriptをやっています。継承とプロトタイプについて読んだことがありますが、それを解読したと思いました。この小さな例を発見するまで。
私が次のことをした場合:
コンソールに次のように表示されると思います。
ただし、次のように表示されます。
問題はもちろんこの呼び出しです:
__construct メソッドで手動でリセットする以外に、TestObject の親変数を「リセット」するにはどうすればよいですか?
TestObject2 が TestObject からすべての値/メソッドを継承し、「new」が PHP OO の方法で期待どおりに動作する別の方法はありますか? (JSがこれを行っている方法は、私の脳が大学から正しく提供されているかのように、本当に奇妙であると確信していますJavaはこの点でPHPのように機能します)